Nicolas Cellier uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-nice.183.mcz==================== Summary ====================
Name: Compiler-nice.183
Author: nice
Time: 29 December 2010, 3:54:57.862 pm
UUID: 228c16fb-1ba3-407c-84fd-d5722ca2be2f
Ancestors: Compiler-ul.182
Cosmetic: rename two shadowing temps in order to avoid warnings in Transcript
=============== Diff against Compiler-ul.182 ===============
Item was changed:
----- Method: BytecodeEncoder>>blockExtentsToTempsMap (in category 'temps') -----
blockExtentsToTempsMap
"Answer a Dictionary of blockExtent to temp locations for the current method.
This is used by the debugger to locate temp vars in contexts. A temp map
entry is a pair of the temp's name and its index, where an index is either an
integer for a normal temp or a pair of the index of the indirect temp vector
containing the temp and the index of the temp in its indirect temp vector."
| blockExtentsToTempsMap |
blockExtentsToLocals ifNil:
[^nil].
blockExtentsToTempsMap := Dictionary new.
blockExtentsToLocals keysAndValuesDo:
[:blockExtent :locals|
blockExtentsToTempsMap
at: blockExtent
put: (Array streamContents:
+ [:aStream|
- [:stream|
locals withIndexDo:
[:local :index|
local isIndirectTempVector
ifTrue: [local remoteTemps withIndexDo:
+ [:remoteLocal :innerIndex| aStream nextPut: { remoteLocal key. { index. innerIndex } }]]
+ ifFalse: [aStream nextPut: { local key. index }]]])].
- [:remoteLocal :innerIndex| stream nextPut: { remoteLocal key. { index. innerIndex } }]]
- ifFalse: [stream nextPut: { local key. index }]]])].
^blockExtentsToTempsMap!
Item was changed:
----- Method: VariableNode>>variableGetterBlockIn: (in category 'tiles') -----
variableGetterBlockIn: aContext
+ | temps tempIndex ivars |
- | temps index ivars |
(self type = 4 and: [self key isVariableBinding]) ifTrue: [
^[self key value]
].
aContext ifNil: [^nil].
self isSelfPseudoVariable ifTrue: [^[aContext receiver]].
self type = 1 ifTrue: [
ivars := aContext receiver class allInstVarNames.
+ tempIndex := ivars indexOf: self name ifAbsent: [^nil].
+ ^[aContext receiver instVarAt: tempIndex]
- index := ivars indexOf: self name ifAbsent: [^nil].
- ^[aContext receiver instVarAt: index]
].
self type = 2 ifTrue: [
temps := aContext tempNames.
+ tempIndex := temps indexOf: self name ifAbsent: [^nil].
+ ^[aContext tempAt: tempIndex]
- index := temps indexOf: self name ifAbsent: [^nil].
- ^[aContext tempAt: index]
].
^nil
!