Interpreter>>primitiveNewWithArg breaks the simulator

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Interpreter>>primitiveNewWithArg breaks the simulator

ccrraaiigg
 

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?


     thanks again,

-C

--
Craig Latta
www.netjam.org/resume
+31  06 2757 7177
+ 1 415  287 3547


Reply | Threaded
Open this post in threaded view
|

Re: Interpreter>>primitiveNewWithArg breaks the simulator

David T. Lewis
 
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