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

commits at source.squeak.org commits at source.squeak.org
Sat Apr 18 01:22:09 UTC 2015


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

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

Name: VMMaker.oscog-eem.1213
Author: eem
Time: 17 April 2015, 6:20:21.453 pm
UUID: d04cb582-a05d-454c-9d66-b60b4ac26839
Ancestors: VMMaker.oscog-eem.1212

Fix generation-time warnings with recent changes.

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

Item was changed:
  ----- Method: CogObjectRepresentationFor32BitSpur>>allImmediate:branchIf:notInstanceOfBehaviors:target: (in category 'sista support') -----
  allImmediate: immediateMask branchIf: reg notInstanceOfBehaviors: arrayObj target: targetFixUp
  	| jmpImmediate |
  	< inline: true>	
  	self assert: immediateMask = objectMemory tagMask.
  	cogit MoveR: reg R: TempReg.
  	jmpImmediate := self genJumpNotImmediateInScratchReg: TempReg.
+ 	jmpImmediate jmpTarget: targetFixUp.
+ 	^0!
- 	jmpImmediate jmpTarget: targetFixUp.!

Item was changed:
  ----- Method: CogObjectRepresentationForSpur>>noneImmediateBranchIf:notInstanceOfBehaviors:target: (in category 'sista support') -----
  noneImmediateBranchIf: reg notInstanceOfBehaviors: arrayObj target: targetFixUp
  	"All classes in arrayObj are not immediate"
  	| label numJumps jumps classObj |
  	<inline: true>
  	<var: #jumps type: #'AbstractInstruction **'>
  	cogit MoveR: reg R: TempReg.
  	jumps := self alloca: (objectMemory numSlotsOf: arrayObj) type: (self cCode: [#'AbstractInstruction *'] inSmalltalk: [cogit backEnd class])..
  	(self genJumpImmediateInScratchReg: TempReg) jmpTarget: targetFixUp.
  	self genGetClassIndexOfNonImm: reg into: TempReg.
  	0 to: (numJumps := objectMemory numSlotsOf: arrayObj) - 1 do:
  		[:i|
  		 classObj := objectMemory fetchPointer: i ofObject: arrayObj.
  		 self genCmpClassIndex: (objectMemory classTagForClass: classObj) R: TempReg.
  		jumps at: i put: (cogit JumpZero: 0) ].
  	cogit Jump: targetFixUp.
  	label := self Label.
  	0 to: numJumps do: [:i |
  		(jumps at: i) jmpTarget: label ].
+ 	^0!
- 	!

Item was changed:
  ----- Method: StackToRegisterMappingCogit>>genSpecialSelectorEqualsEquals (in category 'bytecode generators') -----
  genSpecialSelectorEqualsEquals
+ 	"Decompose code generation for #== into a common constant-folding version,
+ 	 followed by a double dispatch throguh the objectRepresentation to a version
+ 	 that doesn't deal with forwarders and a version that does."
+ 	| primDescriptor result |
- 	| primDescriptor
- 	  result |
- 	<var: #jumpEqual type: #'AbstractInstruction *'>
- 	<var: #jumpNotEqual type: #'AbstractInstruction *'>
  	<var: #primDescriptor type: #'BytecodeDescriptor *'>
- 	<var: #branchDescriptor type: #'BytecodeDescriptor *'>
  	primDescriptor := self generatorAt: byte0.
  	
  	((objectRepresentation isUnannotatableConstant: self ssTop)
+ 	 and: [ objectRepresentation isUnannotatableConstant: (self ssValue: 1) ]) ifTrue:
- 		and: [ objectRepresentation isUnannotatableConstant: (self ssValue: 1) ]) ifTrue:
  		[self assert: primDescriptor isMapped not.
  		 result := self ssTop constant = (self ssValue: 1) constant
  									ifTrue: [objectMemory trueObject]
  									ifFalse: [objectMemory falseObject].
  		 self ssPop: 2.
  		 ^self ssPushConstant: result].
  
+ 	^objectRepresentation genSpecialSelectorEqualsEqualsGuts!
- 	^ objectRepresentation genSpecialSelectorEqualsEqualsGuts!



More information about the Vm-dev mailing list