[Vm-dev] VM Maker: VMMaker.oscog-cb.1931.mcz
commits at source.squeak.org
commits at source.squeak.org
Thu Sep 1 16:30:36 UTC 2016
ClementBera uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-cb.1931.mcz
==================== Summary ====================
Name: VMMaker.oscog-cb.1931
Author: cb
Time: 1 September 2016, 6:27:59.493903 pm
UUID: 48d66455-0094-45bf-9cc9-a55015674de7
Ancestors: VMMaker.oscog-eem.1930
Fixed machine code generation of UByteNumBytes
=============== Diff against VMMaker.oscog-eem.1930 ===============
Item was changed:
----- Method: SistaCogit>>genUnaryInlinePrimitive: (in category 'inline primitive generators') -----
genUnaryInlinePrimitive: prim
"Unary inline primitives."
"SistaV1: 248 11111000 iiiiiiii mjjjjjjj Call Primitive #iiiiiiii + (jjjjjjj * 256) m=1 means inlined primitive, no hard return after execution.
See EncoderForSistaV1's class comment and StackInterpreter>>#unaryInlinePrimitive:"
| rcvrReg resultReg |
rcvrReg := self allocateRegForStackEntryAt: 0.
resultReg := self allocateRegNotConflictingWith: (self registerMaskFor: rcvrReg).
prim
caseOf: {
"00 unchecked class"
[1] -> "01 unchecked pointer numSlots"
[self ssTop popToReg: rcvrReg.
self ssPop: 1.
objectRepresentation
genGetNumSlotsOf: rcvrReg into: resultReg;
genConvertIntegerToSmallIntegerInReg: resultReg].
"02 unchecked pointer basicSize"
[3] -> "03 unchecked byte numBytes"
+ [self ssTop popToReg: rcvrReg.
+ self ssPop: 1.
+ objectRepresentation
- [objectRepresentation
genGetNumBytesOf: rcvrReg into: resultReg;
genConvertIntegerToSmallIntegerInReg: resultReg].
"04 unchecked short16Type format numShorts"
"05 unchecked word32Type format numWords"
"06 unchecked doubleWord64Type format numDoubleWords"
[11] -> "11 unchecked fixed pointer basicNew"
[self ssTop type ~= SSConstant ifTrue:
[^EncounteredUnknownBytecode].
(objectRepresentation
genGetInstanceOf: self ssTop constant
into: resultReg
initializingIf: self extBSpecifiesInitializeInstance) ~= 0 ifTrue:
[^ShouldNotJIT]. "e.g. bad class"
self ssPop: 1]
}
otherwise:
[^EncounteredUnknownBytecode].
extB := 0.
self ssPushRegister: resultReg.
^0!
More information about the Vm-dev
mailing list