[Vm-dev] help needed with the new FFI plugin...

Eliot Miranda eliot.miranda at gmail.com
Thu Jul 21 23:34:10 UTC 2011

Hi All,

    today I committed the threaded FFI plugin along with the threaded VM and
hope to be able to support people in doing threaded FFI work on the x86
platforms really soon now (Esteban, amongst others, this means you ;) ).
 But to put the image-level code that uses the new FFI plugin into
production the standard VM needs to be upgraded to not crash with the
ExternalFunction image changes the new threaded FFI plugin wants.  The main
change is that ExternalFunction changes size, gaining a stackSize inst var
which is used to tell the FFI plugin how much stack spacer to reserve for
marshalling (its computed on first use).  The best way for this to happen is
to start using the ThreadedFFIPlugin as the standard plugin in the
Interpreter VM. The ThreadedFFIPlugin overall is simpler than the old FFI
plugin (no assembler support code) and better (fully reentrant).  But for
this to happen we may need to implement the platform=specific parts of
the ThreadedFFIPlugin (still entirely Smalltalk code) for PowerPC and ARM
(and perhaps others, SPARC??).  I understand what has to be done and I can
explain it to anyone interested in working on the problem, but I don't have
any hardware with which I can test the results so its pretty pointless my
doing the work and producing something inevitably broken.  So are there
people out there who would be interested in doing the port to PPC and ARM?
 It means fleshing out the classes
    ThreadedARMFFIPlugin ThreadedFFICalloutStateForARM
    ThreadedPPCBEFFIPlugin ThreadedFFICalloutStateForPPC
and having a solid understanding of how alloca works to do stack allocation
and how the ABIs on ARM and PPC pass registers.

here's hoping there are a few good low-level people who would be interested.
Let me know.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.squeakfoundation.org/pipermail/vm-dev/attachments/20110721/ddd54987/attachment.htm

More information about the Vm-dev mailing list