Andreas Raab uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-ar.141.mcz==================== Summary ====================
Name: Compiler-ar.141
Author: ar
Time: 16 May 2010, 6:22:58.961 pm
UUID: 14b2de31-b380-394f-a25b-4679e7800c8c
Ancestors: Compiler-nice.140
Eliot's fix for
http://bugs.squeak.org/view.php?id=7532. See discussion at
http://lists.squeakfoundation.org/pipermail/squeak-dev/2010-May/150688.html=============== Diff against Compiler-nice.140 ===============
Item was changed:
----- Method: Encoder>>encodeVariable:sourceRange:ifUnknown: (in category 'encoding') -----
encodeVariable: name sourceRange: range ifUnknown: action
| varNode |
+ varNode := scopeTable
+ at: name
+ ifAbsent:
+ [(self lookupInPools: name
+ ifFound: [:assoc | varNode := self global: assoc name: name])
+ ifTrue: [varNode]
+ ifFalse: [^action value]].
+ range ifNotNil:
+ [name first canBeGlobalVarInitial ifTrue:
+ [globalSourceRanges addLast: { name. range. false }]].
- varNode := scopeTable at: name
- ifAbsent:
- [(self lookupInPools: name
- ifFound: [:assoc | varNode := self global: assoc name: name])
- ifTrue: [varNode]
- ifFalse: [^action value]].
- range ifNotNil: [
- name first canBeGlobalVarInitial ifTrue:
- [globalSourceRanges addLast: { name. range. false }]. ].
+ (varNode isTemp and: [varNode scope < 0]) ifTrue:
+ [^OutOfScopeNotification signal
+ ifTrue: [action value]
+ ifFalse: [self notify: 'out of scope']].
+ ^varNode!
- (varNode isTemp and: [varNode scope < 0]) ifTrue: [
- OutOfScopeNotification signal ifFalse: [ ^self notify: 'out of scope'].
- ].
- ^ varNode!