Hi Ken, On Wed, Nov 10, 2010 at 10:20 AM, Ken Treis <ken@miriamtech.com> wrote:
What's the status of Alien in the new Cog VM? I was able to load Alien into Pharo 1.1.1 running Cog, and some simple callouts worked (e.g. `CRLibrary libraryVersionString` in CairoGraphics. But every callout with arguments failed in primFFICallResult:.
Alien works perfectly for me in Pharo 1.1 using JMM's VMs when I load the Pharo 1.1 version from ConfigurationOfAlien, but I admit I haven't tried 1.1.1 in this arrangement.
Is there something that's changed in Cog's Alien primitive implementation?
IIRC, the Alien callout code is written assuming stacks grow up (in MethodContext instances) whereas in the Cog Stack and JIT VMs stacks grow down. So the glue in platforms/Cross/plugins/IA32ABI/dabusiness.h needs rewriting. Specifically the second loop over the arguments at line 45 needs to mimic the code at line 17. (I know, insane; why have two different loops in the first place? counting down towards zero can generate slightly faster code than counting up towards a limit; you need one less register). But I'm hoping that the ALien callouts will die the death soon. I have Alien callbacks integrated with the FFI and of course the ALien data manipulation code works fine. So if you're eager to have Alien callouts work see whether the above change fixes things, in which case I can integrate the fix. But if you're not so eager you could wait for me to push out the FFI changes, but that could take a few weeks. HTH Eliot
-- Ken Treis Miriam Technologies, Inc.