[Vm-dev] Pharo 2.0 and VM Simulator

Mariano Martinez Peck marianopeck at gmail.com
Thu Apr 11 12:10:30 UTC 2013


Check in the mailing list mails from nick.lsts at gmail.com. This was an
argentinian guy who did A LOT of effort trying to make Simulator work in
Pharo....




On Thu, Apr 11, 2013 at 6: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?
>
> Phil
>
>


-- 
Mariano
http://marianopeck.wordpress.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20130411/159e55ab/attachment.htm


More information about the Vm-dev mailing list