[Pkg] The Trunk: Compiler-eem.300.mcz

commits at source.squeak.org commits at source.squeak.org
Fri May 29 22:31:58 UTC 2015


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

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

Name: Compiler-eem.300
Author: eem
Time: 29 May 2015, 3:31:40.184 pm
UUID: 538f90f4-71d3-4f00-ac34-348700471a82
Ancestors: Compiler-eem.299

Use the size/emitPushNClosureTemps: api in
block generation.

=============== Diff against Compiler-eem.299 ===============

Item was changed:
  ----- Method: BlockNode>>emitCodeForEvaluatedClosureValue:encoder: (in category 'code generation (closures)') -----
  emitCodeForEvaluatedClosureValue: stack encoder: encoder
  	| position |
  	position := stack position.
  	stack position: arguments size + copiedValues size.
+ 	encoder genPushNClosureTemps: temporaries size.
- 	temporaries size timesRepeat:
- 		[NodeNil emitCodeForValue: stack encoder: encoder].
  	self
  		reindexingLocalsDo: [self emitCodeForEvaluatedValue: stack encoder: encoder]
  		encoder: encoder.
  	self returns ifFalse:
  		[encoder genReturnTopToCaller.
  		 pc := encoder methodStreamPosition].
  	stack position: position!

Item was changed:
  ----- Method: BlockNode>>sizeCodeForEvaluatedClosureValue: (in category 'code generation (closures)') -----
  sizeCodeForEvaluatedClosureValue: 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 closure activation we only need to push nils for the remaining temporaries."
+ 	^(encoder sizePushNClosureTemps: temporaries size)
- 	^temporaries size * (NodeNil sizeCodeForValue: encoder)
  	+ (self
  		reindexingLocalsDo: [self sizeCodeForEvaluatedValue: encoder]
  		encoder: nil "don't store temps yet")
  	+ (self returns ifTrue: [0] ifFalse: [encoder sizeReturnTopToCaller])!



More information about the Packages mailing list