Universal VM for 32/64 bit images (was: [Vm-dev] 64bit FFI?)

Eliot Miranda eliot.miranda at gmail.com
Fri Feb 13 05:47:44 UTC 2009

On Thu, Feb 12, 2009 at 7:38 PM, David T. Lewis <lewis at mail.msen.com> wrote:

> On Thu, Feb 12, 2009 at 11:18:02AM -0800, Eliot Miranda wrote:
> >
> > AFAICT you can produce a 64-bit VM that runs a 32-bit image with this
> > technique, but you can't get a VM that runs both.
> Actually, I think that it probably *is* possible to make a Squeak
> VM that will run both 32 and 64 bit images, although performance may
> be poor and the plugins would be problematic. The basic idea is to
> move BytesPerWord and BaseHeaderSize into run time variables rather
> than compile time macros (i.e. move them from class variables in
> ObjectMemory to instance variables in ObjectMemory), and set the
> values at image load time. Everything else should just work.

You'll have to change oopForPointer/pointerForOop to account for the
different widths of an oop.  e.g. if the heap is origined at 0 then in a
64-bit image the oop 4 maps to byte address 8, but in a 32-bit image it maps
to byte address 4.

You'll have to change the readers and writers
(e.g. oopAtPointer/oopAtPointerPut) to test BytesPerWord and fetch/store 64
or 32 bits as required.

At least.

It won't be particularly sprightly :)

I've been meaning to do this for quite some time but have not gotten
> around to trying it.
> Dave
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20090212/07186a09/attachment.htm

More information about the Vm-dev mailing list