Ok, well I've not lately compiled a VM that runs as 64bit binary against a 32bit image. (july of this year). 
But yes if you asked for sizeof(long) you would get 4, so yes sizeof(long) (4) versus sizeof(void*) (8) would be different. 
And yes 5.7 minus most plugins did work when run as a 64bit executable. 

I've never compiled up a 64bit binary, 32bit image for Cog. 

But isn't there also the Squeak image word size to consider since it could be a 32bit vm running a 64bit image. 
Mind I didn't compile one of those up.. 

On 2010-10-12, at 7:21 PM, Eliot Miranda wrote:

Hi David, John, All,

    I'm working on integrating callbacks into the FFI and have the old version of callbacks working.  In integrating with Cog I've realised some cleanliness can come from a slightly different approach, the details of which are irrelevant to my question, which is, when we're running a 32-bit image above a 32-bit VM compiled in 64-bit mode, is there any way from the image we can ask the VM if it is 64-bit or 32-bit?  Am I to understand correctly that you, John, have arranged that when we're compiling the iOS VM on a 64-bit Mac OS X, sizeof(long) = 8, and everything still works?  If not, the question is moot.  If so, how from the image can I ask whether the VM is 64-bit, e.g. by asking what sizeof(long) or sizeof(void *) is?

If there isn't a way, I propose we add vmParameterAt: 70 to answer the VM's underlying word size.  Tis is different to vmParameterAt: 40, which is the image's underlying word size.

I need the answer to this so that when a callback tries to answer e.g. an integer result it can tell whether it should use some Alien signedLongAt: N or Alien signedLongLongAt: N to answer the result, and what machine code (x86 vs x86-64) to use for the callback thunk.


John M. McIntosh <johnmci@smalltalkconsulting.com>   Twitter:  squeaker68882
Corporate Smalltalk Consulting Ltd.  http://www.smalltalkconsulting.com