On Mon, May 23, 2011 at 05:33:09PM +0200, Craig Latta wrote:
>
>
> Hi--
>
> Mm, looks like a bunch of 64-bit fun is in store for me. :)
>
> Interpreter>>primitiveNewWithArg includes:
>
> ***
>
> self
> isDefinedTrueExpression: 'SQ_IMAGE64 && SQ_HOST64'
> inSmalltalk: [size := self positive32BitValueOf: self stackTop]
> comment: 'permit large object allocation on 64 bit image and host'
> ifTrue: [size := self positive64BitValueOf: self stackTop]
> ifFalse: [size := self positive32BitValueOf: self stackTop]
>
> ***
>
> The "in Smalltalk" part doesn't answer a Boolean. What should it be?
>
Hi Craig,
It's a bug, but I think I may have fixed it in VMMaker-dtl.231. I am away
and cannot check it (I'm just looking at the commit notices on SqueakSource
right now), but I think that you will find the corrected method in that update,
along with a number of other fixes related to the simulator.
The commit notice for that update is:
VMMaker-dtl.231.mcz Dave Lewis, 6 May 2011 6:04:35 am
VMMaker 4.4.18
Changes to allow 64-bit image interpreter simulator to run on little endian
(e.g. Intel) platforms.
Implement missing methods #longAt: #longAt:put: and #byteSwapped: in
InterpreterSimulatorLSB64.
Fix InterpreterSimulatorLSB>>charsOfLong: to use bytesPerWord instead of 4,
required for running InterpreterSimulatorLSB64.
Fix the inSmalltalk: block in #primitiveNewWithArg (fix affects simulator only,
no effect on generated code).
Use "self bytesPerWord" in Interpreter (required for C translation) but use direct
variable ref in the simulator because it is noticeably faster in simulation.
Fix typo in InterpreterSimulator class comment.
Note, original 64-bit image work was done on a big endian Mac, so a few LSB64
updates may have been missed at that time.
Dave