[Vm-dev] VM Maker: VMMaker.oscog-eem.1430.mcz

commits at source.squeak.org commits at source.squeak.org
Tue Aug 11 19:19:19 UTC 2015


Eliot Miranda uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-eem.1430.mcz

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

Name: VMMaker.oscog-eem.1430
Author: eem
Time: 11 August 2015, 12:17:13.928 pm
UUID: 3d5ca520-ac41-40be-8a8b-95a18d1cb027
Ancestors: VMMaker.oscog-eem.1429

Get the fix for Integer receiver, float arg comparison right.

Fix some C compilation warnings.

Size a dictinary in Slang appropriately.

=============== Diff against VMMaker.oscog-eem.1429 ===============

Item was changed:
  ----- Method: Cogit>>JumpFull: (in category 'abstract instructions') -----
  JumpFull: jumpTarget
  	<inline: true>
  	<returnTypeC: #'AbstractInstruction *'>
+ 	^self gen: JumpFull literal: jumpTarget asInteger!
- 	^self gen: JumpFull literal: jumpTarget!

Item was changed:
  ----- Method: SimpleStackBasedCogit>>genPrimitiveLessOrEqual (in category 'primitive generators') -----
  genPrimitiveLessOrEqual
  	^self
  		genSmallIntegerComparison: JumpLessOrEqual
+ 		orDoubleComparison: #JumpFPGreaterOrEqual:
- 		orDoubleComparison: #JumpFPGreater:
  		invert: true!

Item was changed:
  ----- Method: SimpleStackBasedCogit>>genPrimitiveLessThan (in category 'primitive generators') -----
  genPrimitiveLessThan
  	^self
  		genSmallIntegerComparison: JumpLess
+ 		orDoubleComparison: #JumpFPGreater:
- 		orDoubleComparison: #JumpFPGreaterOrEqual:
  		invert: true!

Item was changed:
  ----- Method: StackInterpreter>>printStackPage: (in category 'debug printing') -----
  printStackPage: page
  	<inline: true>
+ 	<var: #page type: #'StackPage *'>
  	self printStackPage: page useCount: -1!

Item was changed:
  ----- Method: TMethod>>argAssignmentsFor:send:in: (in category 'inlining') -----
  argAssignmentsFor: meth send: aSendNode in: aCodeGen
  	"Return a collection of assignment nodes that assign the given argument expressions to the formal parameter variables of the given method."
  	"Optimization: If the actual parameters are either constants or local variables in the target method (the receiver), substitute them directly into the body of meth. Note that global variables cannot be subsituted because the inlined method might depend on the exact ordering of side effects to the globals."
  
  	| stmtList substitutionDict argList |
  	meth args size > (argList := aSendNode args) size ifTrue:
  		[self assert: (meth args first beginsWith: 'self_in_').
  		 argList := {aSendNode receiver}, aSendNode args].
  	
  	stmtList := OrderedCollection new: argList size.
+ 	substitutionDict := Dictionary new: argList size.
- 	substitutionDict := Dictionary new: 100.
  	meth args with: argList do:
  		[ :argName :exprNode |
  		(self isNode: exprNode substitutableFor: argName inMethod: meth in: aCodeGen)
  			ifTrue:
  				[substitutionDict
  					at: argName
  					put: (aCodeGen
  							node: exprNode
  							typeCompatibleWith: argName
  							inliningInto: meth selector
  							in: self).
  				 locals remove: argName]
  			ifFalse:
  				[stmtList addLast:
  					(TAssignmentNode new
  						setVariable: (TVariableNode new setName: argName)
  						expression: (aCodeGen
  										node: exprNode copy
  										typeCompatibleWith: argName
  										inliningInto: meth selector
  										in: self))]].
  	meth parseTree: (meth parseTree bindVariablesIn: substitutionDict).
  	^stmtList!



More information about the Vm-dev mailing list