Eliot Miranda uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-eem.1052.mcz
==================== Summary ====================
Name: Kernel-eem.1052
Author: eem
Time: 6 December 2016, 11:30:33.659177 am
UUID: 925c6bf0-e0ad-483a-b0fd-a20c5efa4470
Ancestors: Kernel-ul.1051
Provide CompiledMethod>>tempNames again. Requires Tools-eem.735
=============== Diff against Kernel-ul.1051 ===============
Item was added:
+ ----- Method: CompiledMethod>>tempNames (in category 'source code management') -----
+ tempNames
+ ^self debuggerMap tempNamesForMethod: self!
Eliot Miranda uploaded a new version of Tools to project The Trunk:
http://source.squeak.org/trunk/Tools-eem.735.mcz
==================== Summary ====================
Name: Tools-eem.735
Author: eem
Time: 6 December 2016, 11:29:27.381109 am
UUID: 947917cc-cfaf-4c57-a031-bc7da795846e
Ancestors: Tools-topa.734
Provide a path for methods to compute their temp names.
=============== Diff against Tools-topa.734 ===============
Item was added:
+ ----- Method: DebuggerMethodMapForClosureCompiledMethods>>privateTempRefsForMethod:startpcsToBlockExtents: (in category 'private') -----
+ privateTempRefsForMethod: method startpcsToBlockExtents: startpcsToBlockExtents
+ "Answer the sequence of temps in scope in method in the natural order,
+ outermost arguments and temporaries first, innermost last. Each temp is
+ a pair of the temp's name followed by a reference. The reference can be
+ integer - index of temp in aContext
+ #( indirectionVectorIndex tempIndex ) - remote temp in indirectionVector at index in aContext
+ #( outer. temp reference ) - a temp reference in an outer context."
+ blockExtentsToTempRefs ifNil:
+ [blockExtentsToTempRefs := (method holdsTempNames
+ ifTrue: [method]
+ ifFalse: [methodNode]) blockExtentsToTempsMap.
+ blockExtentsToTempRefs ifNil:
+ ["an empty method. shouldn't be able to step into here but it
+ can happen in weird circumstances (i.e. with MethodWrapper)."
+ blockExtentsToTempRefs := Dictionary new.
+ blockExtentsToTempRefs
+ at: (startpcsToBlockExtents at: method initialPC)
+ put: {}].
+ startpcsToTempRefs := Dictionary new].
+ ^startpcsToTempRefs
+ at: method initialPC
+ ifAbsentPut:
+ [blockExtentsToTempRefs at: (startpcsToBlockExtents at: method initialPC)]!
Item was added:
+ ----- Method: DebuggerMethodMapForClosureCompiledMethods>>tempNamesForMethod: (in category 'accessing') -----
+ tempNamesForMethod: aMethod
+ "Answer an Array of all the temp names in scope in aMethod starting with
+ the home's first local (the first argument or first temporary if no arguments)."
+ ^(self
+ privateTempRefsForMethod: aMethod
+ startpcsToBlockExtents: aMethod startpcsToBlockExtents) collect:
+ [:pair| pair first]!
Tobias Pape uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-topa.725.mcz
==================== Summary ====================
Name: Collections-topa.725
Author: topa
Time: 5 December 2016, 8:58:22.49114 pm
UUID: d521fd18-86b5-42ce-8c74-475031b54934
Ancestors: Collections-eem.724
Fix a few comments
=============== Diff against Collections-eem.724 ===============
Item was changed:
----- Method: ArrayedCollection class>>with:with:with:with: (in category 'instance creation') -----
with: firstObject with: secondObject with: thirdObject with: fourthObject
+ "Answer a new instance of me, containing only the four arguments as
- "Answer a new instance of me, containing only the three arguments as
elements."
| newCollection |
newCollection := self new: 4.
newCollection at: 1 put: firstObject.
newCollection at: 2 put: secondObject.
newCollection at: 3 put: thirdObject.
newCollection at: 4 put: fourthObject.
^newCollection!
Item was changed:
----- Method: SequenceableCollection>>combinationsAt:in:after:do: (in category 'private') -----
combinationsAt: jj in: aCollection after: nn do: aBlock
"Choose k of N items and put in aCollection. jj-1 already chosen. Indexes of items are in numerical order, to avoid the same combo being used twice. In this slot, we are allowed to use items in self indexed by nn+1 to self size. nn is the index used for position jj-1."
+ "(1 to: 6) combinations: 3 atATimeDo: [:each | Transcript cr; show: each printString]"
- "(1 to: 6) combinationsSize: 3 do: [:each | Transcript cr; show: each printString]"
nn+1 to: self size do: [:index |
aCollection at: jj put: (self at: index).
jj = aCollection size
ifTrue: [aBlock value: aCollection]
ifFalse: [self combinationsAt: jj + 1 in: aCollection after: index do: aBlock]].!