[squeak-dev] The Trunk: Compiler-eem.257.mcz
commits at source.squeak.org
commits at source.squeak.org
Tue Mar 12 20:36:55 UTC 2013
Eliot Miranda uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-eem.257.mcz
==================== Summary ====================
Name: Compiler-eem.257
Author: eem
Time: 12 March 2013, 1:35:51.456 pm
UUID: 02f32284-4e16-4352-a766-7b3dd7a461b1
Ancestors: Compiler-nice.256
Fix Decompiler now that Environments uses Alias.
Alias isSpecialReadBinding and isSpecialWriteBinding and so
is accessed by sending #value[:] and must be decompiled
appropriately.
=============== Diff against Compiler-nice.256 ===============
Item was changed:
----- Method: DecompilerConstructor>>codeMessage:selector:arguments: (in category 'constructor') -----
codeMessage: receiver selector: selector arguments: arguments
+ | symbol |
- | symbol node |
symbol := selector key.
+ (BraceNode new
- (node := BraceNode new
matchBraceWithReceiver: receiver
selector: symbol
+ arguments: arguments) ifNotNil: [:node| ^node].
+ (self
+ decodeLiteralVariableValueDereferenceWithReceiver: receiver
+ selector: symbol
+ arguments: arguments) ifNotNil: [:node| ^node].
+ (self decodeIfNilWithReceiver: receiver
- arguments: arguments) ifNotNil: [^ node].
- (node := self decodeIfNilWithReceiver: receiver
selector: symbol
+ arguments: arguments) ifNotNil: [:node| ^node].
+ ^MessageNode new
- arguments: arguments) ifNotNil: [^ node].
- ^ MessageNode new
receiver: receiver selector: selector
arguments: arguments
precedence: symbol precedence!
Item was added:
+ ----- Method: DecompilerConstructor>>decodeLiteralVariableValueDereferenceWithReceiver:selector:arguments: (in category 'constructor') -----
+ decodeLiteralVariableValueDereferenceWithReceiver: receiver selector: selector arguments: arguments
+ | varNode |
+ (receiver notNil "cascades"
+ and: [receiver isLiteralNode
+ and: [receiver key isVariableBinding]]) ifFalse:
+ [^nil].
+ varNode := self codeAnyLitInd: receiver key.
+ selector = #value ifTrue:
+ [^varNode].
+ ^selector = #value: ifTrue:
+ [self codeAssignTo: varNode value: arguments first]!
More information about the Squeak-dev
mailing list
|