[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