[squeak-dev] The Trunk: Compiler-eem.369.mcz

commits at source.squeak.org commits at source.squeak.org
Sat Jan 6 21:28:47 UTC 2018


Eliot Miranda uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-eem.369.mcz

==================== Summary ====================

Name: Compiler-eem.369
Author: eem
Time: 6 January 2018, 1:28:37.915349 pm
UUID: a342cbfd-89fd-435f-af5b-7ad501af8aeb
Ancestors: Compiler-eem.368

reindexingLiteralsDo: acually needs to reset the lliteral nodes, not merely reset them, doh!
Fix a bad slip in the code to size a full block.  Juyst because it ends with a returnNilToCaller doesn;t mean we shouldn't generate the other nodes in the block, doh!

=============== Diff against Compiler-eem.368 ===============

Item was changed:
  ----- Method: BlockNode>>sizeCodeForEvaluatedFullClosureValue: (in category 'code generation') -----
  sizeCodeForEvaluatedFullClosureValue: encoder
  	"The closure value primitives push the arguments and the copied values.
  	 The compiler guarantees that any copied values come before all local temps.
  	 So on full closure activation we need do nothing."
  	(statements last == NodeNil
  	 and: [self returns not]) ifTrue:
+ 		[^(self sizeCodeExceptLast: encoder)
+ 		 + encoder sizeReturnNilToCaller].
- 		[^encoder sizeReturnNilToCaller].
  	^(self sizeCodeForEvaluatedValue: encoder)
  	+ (self returns ifTrue: [0] ifFalse: [encoder sizeReturnTopToCaller])!

Item was changed:
  ----- Method: BytecodeEncoder>>reindexingLiteralsDo: (in category 'code generation') -----
  reindexingLiteralsDo: aBlock
  	| savedNodes saveBlock |
  	savedNodes := IdentityDictionary new.
+ 	saveBlock := [:node| savedNodes at: node put: node shallowCopy.  node resetForBlockGeneration].
- 	saveBlock := [:node| savedNodes at: node put: node shallowCopy].
  	litSet do: saveBlock.
  	litIndSet do: saveBlock.
  	selectorSet do: saveBlock.
  	^aBlock ensure:
  		[| restoreBlock |
  		 restoreBlock := [:node| node resetFromCopy: (savedNodes at: node)].
  		 litSet do: restoreBlock.
  		 litIndSet do: restoreBlock.
  		 selectorSet do: [:node| node resetFromCopy: (savedNodes at: node ifAbsent: [node])]]!

Item was added:
+ ----- Method: LiteralNode>>resetForBlockGeneration (in category 'code generation') -----
+ resetForBlockGeneration
+ 	"Reset the receiver to an unassigned state such that its index
+ 	 in the encoder's literalStream is as yet to be determined."
+ 	code := LdLitType negated.
+ 	index := nil!

Item was added:
+ ----- Method: LiteralVariableNode>>resetForBlockGeneration (in category 'code generation') -----
+ resetForBlockGeneration
+ 	"Reset the receiver to an unassigned state such that its index
+ 	 in the encoder's literalStream is as yet to be determined."
+ 	code := LdLitIndType negated.
+ 	index := nil!

Item was changed:
  ----- Method: SelectorNode>>resetForBlockGeneration (in category 'code generation') -----
  resetForBlockGeneration
+ 	"Reset the receiver to an unassigned state such that its index
- 	"Recent the receiver to an unassigned state such that its index
  	 in the encoder's literalStream is as yet to be determined."
+ 	code := SendType negated.
  	index := nil!

Item was added:
+ ----- Method: SpecialSelectorNode>>resetForBlockGeneration (in category 'code generation') -----
+ resetForBlockGeneration
+ 	"Reset the receiver to an unassigned state such that its index
+ 	 in the encoder's literalStream is as yet to be determined."
+ 	index := nil!



More information about the Squeak-dev mailing list