[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