[Vm-dev] Pharo 2.0 and VM Simulator

phil at highoctane.be phil at highoctane.be
Fri Apr 12 09:37:19 UTC 2013


I am using the following version:

VMMaker
oscog-EstebanLorenzano.236

Phil



2013/4/11 Igor Stasenko <siguctua at gmail.com>

>
> On 11 April 2013 18:00, Eliot Miranda <eliot.miranda at gmail.com> wrote:
> >
> >
> >
> > On Thu, Apr 11, 2013 at 2:11 AM, phil at highoctane.be <phil at highoctane.be>
> wrote:
> >>
> >>
> >> Hello,
> >>
> >> I've been working on getting the simulator to work from VMMaker.
> >>
> >> Now, I can load my 6505 formatted image inside the simulator and it
> looks okay (from what I can inspect).
> >>
> >> Then, I am now running the test of the sim:
> >>
> >> test
> >> transcript clear.
> >> byteCount := 0.
> >> quitBlock := [^ self].
> >> self internalizeIPandSP.
> >> self fetchNextBytecode.
> >> [true] whileTrue:
> >> [self dispatchOn: currentBytecode in: BytecodeTable.
> >> byteCount := byteCount + 1.
> >> byteCount \\ 10000 = 0 ifTrue: [self fullDisplay]].
> >> self externalizeIPandSP.
> >>
> >>
> >> and I hit an issue:
> >>
> >> MNU: isInstanceOfClassFloat: oop.
> >> InterpreterSimulatorLSB(Interpreter)>>floatValueOf:
> >> InterpreterSimulatorLSB(Interpreter)>>loadFloatOrIntFrom:
> >> InterpreterSimulatorLSB(Interpreter)>>primitiveFloatEqual:toArg:
> >> InterpreterSimulatorLSB(Interpreter)>>bytecodePrimEqual
> >> InterpreterSimulatorLSB(InterpreterSimulator)>>dispatchOn:in:
> >> InterpreterSimulatorLSB(InterpreterSimulator)>>test
> >> UndefinedObject>>DoIt
> >>
> >> This happens here:
> >>
> >> floatValueOf: oop
> >> "Answer the C double precision floating point value of the argument,
> >> or fail if it is not a Float, and answer 0.
> >> Note: May be called by translated primitive code."
> >>
> >> | isFloat result |
> >> <returnTypeC: #double>
> >> <var: #result type: #double>
> >> isFloat := self isInstanceOfClassFloat: oop.
> >> isFloat ifTrue:
> >> [self cCode: '' inSmalltalk: [result := Float new: 2].
> >> self fetchFloatAt: oop + BaseHeaderSize into: result.
> >> ^result].
> >> self primitiveFail.
> >> ^0.0
> >>
> >> There is such a method in IntepreterPrimitives, but not in the
> Interpreter itself nor parents.
> >>
> >> InterpreterPrimitives>>isInstanceOfClassFloat: oop
> >> <inline: true>
> >> "N.B.  Because Slang always inlines is:instanceOf:compactClassIndex:
> >> (because is:instanceOf:compactClassIndex: has an inline: pragma) the
> >> phrase (objectMemory splObj: ClassFloat) is expanded in-place and is
> >> _not_ evaluated if oop has a non-zero CompactClassIndex."
> >> ^objectMemory
> >> is: oop
> >> instanceOf: (objectMemory splObj: ClassFloat)
> >> compactClassIndex: ClassFloatCompactIndex
> >>
> >> Clues?
> >
> >
> > Just copy the method into Interpreter and replace objectMemory with
> self.  But I don't understand which VMMsker you're using.  In David Lewis'
> trunk, e.g. VMMaker-dtl.316, Interpreter inherits from
> InterpreterPrimitives.
>
> It its Cog branch, i think.
>
> >
> >>
> >>
> >> Phil
> >>
> >
> >
> >
> > --
> > best,
> > Eliot
> >
>
>
>
> --
> Best regards,
> Igor Stasenko.
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20130412/7d90943e/attachment.htm


More information about the Vm-dev mailing list