[Vm-dev] Pharo 2.0 and VM Simulator

phil at highoctane.be phil at highoctane.be
Thu Apr 11 09:11:09 UTC 2013


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:

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.

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.
self primitiveFail.

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."
is: oop
instanceOf: (objectMemory splObj: ClassFloat)
 compactClassIndex: ClassFloatCompactIndex


-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20130411/66533a61/attachment.htm

More information about the Vm-dev mailing list