[Vm-dev] VM Maker: VMMaker.oscog-cb.2095.mcz
Eliot Miranda
eliot.miranda at gmail.com
Tue Jan 17 16:53:59 UTC 2017
Give me a few minutes and I'll fix this. The macroi is supposed to be defined in maybeHaltIfDebugPC
_,,,^..^,,,_ (phone)
> On Jan 17, 2017, at 7:20 AM, Ronie Salgado <roniesalg at gmail.com> wrote:
>
> Hi Clement,
>
>> Ronie, I could not merge with your code (I got "Could no merge because one character keycode is normally not used in code")
> Fixed.
>
>> It seems there is something fishy in this version (before my changes), I can't properly compile the VM ?
> Last night, Eliot introduced some changes at version VMMaker.oscog-eem.2094, with a compilation error. That version also requires defining a macro(#define maybeHaltIfDebugPC() ) for being able to compile the vm. It seems that Eliot has not yet added the actual definition of the macro. For testing quickly, that define somewhere at sq.h
>
>
>
> 2017-01-17 9:59 GMT-03:00 Clément Bera <bera.clement at gmail.com>:
>>
>> It seems there is something fishy in this version (before my changes), I can't properly compile the VM ?
>>
>>> On Tue, Jan 17, 2017 at 1:27 PM, <commits at source.squeak.org> wrote:
>>>
>>> ClementBera uploaded a new version of VMMaker to project VM Maker:
>>> http://source.squeak.org/VMMaker/VMMaker.oscog-cb.2095.mcz
>>>
>>> ==================== Summary ====================
>>>
>>> Name: VMMaker.oscog-cb.2095
>>> Author: cb
>>> Time: 17 January 2017, 1:26:37.587598 pm
>>> UUID: a685bd8e-f11b-41b3-9d74-b38403dfc9b3
>>> Ancestors: VMMaker.oscog-eem.2094
>>>
>>> Ronie, I could not merge with your code (I got "Could no merge because one character keycode is normally not used in code")
>>>
>>> Added support for inlined primitive #characterAsInteger.
>>>
>>> =============== Diff against VMMaker.oscog-eem.2094 ===============
>>>
>>> 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
>>> 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] .
>>> [20] -> "20 identityHash"
>>> [self ssTop popToReg: rcvrReg.
>>> objectRepresentation genGetHashFieldNonImmOf: rcvrReg asSmallIntegerInto: resultReg.
>>> + self ssPop: 1] .
>>> - self ssPop: 1]
>>> "21 identityHash (SmallInteger)"
>>> "22 identityHash (Character)"
>>> "23 identityHash (SmallFloat64)"
>>> "24 identityHash (Behavior)"
>>> + "30 immediateAsInteger (Character)
>>> + 31 immediateAsInteger (SmallFloat64)"
>>> + [30] ->
>>> + [self ssTop popToReg: rcvrReg.
>>> + objectRepresentation genConvertCharacterToSmallIntegerInReg: rcvrReg.
>>> + self ssPop: 1]
>>> }
>>> +
>>> otherwise:
>>> [^EncounteredUnknownBytecode].
>>> extB := 0.
>>> numExtB := 0.
>>> self ssPushRegister: resultReg.
>>> ^0!
>>>
>>> Item was changed:
>>> ----- Method: StackInterpreter>>unaryInlinePrimitive: (in category 'miscellaneous bytecodes') -----
>>> unaryInlinePrimitive: primIndex
>>> "SistaV1: 248 11111000 iiiiiiii mjjjjjjj Call Primitive #iiiiiiii + (jjjjjjj * 256) m=1 means inlined primitive, no hard return after execution."
>>> <option: #SistaVM>
>>> | result |
>>> primIndex caseOf: {
>>> "1000 unchecked class"
>>> [0] -> [result := objectMemory fetchClassOf: self internalStackTop.
>>> self internalStackTopPut: result].
>>> "1001 unchecked pointer numSlots"
>>> [1] -> [result := objectMemory numSlotsOf: self internalStackTop.
>>> self internalStackTopPut: (objectMemory integerObjectOf: result)].
>>> "1002 unchecked pointer basicSize"
>>> [2] -> [result := (objectMemory numSlotsOf: self internalStackTop)
>>> - (objectMemory fixedFieldsOfClass: (objectMemory fetchClassOfNonImm: self internalStackTop)).
>>> self internalStackTopPut: (objectMemory integerObjectOf: result)].
>>> "1003 unchecked byte8Type format numBytes (includes CompiledMethod)"
>>> [3] -> [result := objectMemory numBytesOf: self internalStackTop.
>>> self internalStackTopPut: (objectMemory integerObjectOf: result)].
>>> "1004 unchecked short16Type format numShorts"
>>> [4] -> [result := objectMemory num16BitUnitsOf: self internalStackTop.
>>> self internalStackTopPut: (objectMemory integerObjectOf: result)].
>>> "1005 unchecked word32Type format numWords"
>>> [5] -> [result := objectMemory num32BitUnitsOf: self internalStackTop.
>>> self internalStackTopPut: (objectMemory integerObjectOf: result)].
>>> "1006 unchecked doubleWord64Type format numDoubleWords"
>>> [6] -> [result := objectMemory num64BitUnitsOf: self internalStackTop.
>>> self internalStackTopPut: (objectMemory integerObjectOf: result)].
>>>
>>> "1011 unchecked fixed pointer basicNew"
>>> [11] -> [| classObj numSlots |
>>> classObj := self internalStackTop.
>>> numSlots := objectMemory instanceSizeOf: classObj.
>>> result := objectMemory eeInstantiateSmallClass: classObj numSlots: numSlots.
>>> (extB noMask: 1) ifTrue:
>>> [0 to: numSlots - 1 do:
>>> [:i| objectMemory storePointerUnchecked: i ofObject: result withValue: objectMemory nilObject]].
>>> extB := 0.
>>> numExtB := 0.
>>> self internalStackTopPut: result].
>>> "1020 identityHash"
>>> [20] -> [result := objectMemory hashBitsOf: self internalStackTop.
>>> + self internalStackTopPut: (objectMemory integerObjectOf: result)].
>>> - self internalStackTopPut: (objectMemory integerObjectOf: result)]
>>> "1021 identityHash (SmallInteger)"
>>> "1022 identityHash (Character)"
>>> "1023 identityHash (SmallFloat64)"
>>> "1024 identityHash (Behavior)"
>>> + "1030 immediateAsInteger (Character)
>>> + 1031 immediateAsInteger (SmallFloat64)"
>>> + [30] -> [ result := objectMemory characterValueOf: self internalStackTop.
>>> + self internalStackTopPut: (objectMemory integerObjectOf: result)]
>>> }
>>> otherwise:
>>> [localIP := localIP - 3.
>>> self respondToUnknownBytecode]!
>>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20170117/e48ca8fa/attachment-0001.html>
More information about the Vm-dev
mailing list