SYSTEM WARNING: Creating default object from empty value

Mantis - Squeak
Viewing Issue Advanced Details
7237 VM feature always 11-28-08 16:16 10-23-10 16:59
lewis  
lewis  
normal  
acknowledged  
open  
none    
none  
0007237: Make FFI work on 64 bit platforms
FFI has a number of 32 bit dependencies that prevent operation on 64 bit point size machines. Details were reported on the vm-dev list:

http://lists.squeakfoundation.org/pipermail/vm-dev/2008-May/001945.html [^]

Overall changes involve:
 - Add FFIPlugin>>primitiveSizeOfPointer for runtime address size check
 - ExternalAddress is either 4 or 8 bytes wide, initialized at image startup
 - Remove all casts from pointer to int for FFI plugin and interpreter
   (VM minor version bump)
 - Recompile all methods with cdecl or apicall pragmas (must to done for any
   image to run properly on 64 bit host)
With changes applied, status is as follows:
Platform FFI testing as of Mon May 26 14:26:22 EDT 2008
"GREEN" means no compiler warnings, all SUnits pass, and the X11/Win32 examples work.

======================================================================================================
VM config.guess FFI implementation host image status
-- ------------ ------------------- ---- ----- ------
win32 32 bit Windows on AMD64 sqWin32FFI.c 32 bit 32 bit GREEN
win32 32 bit Windows on AMD64 sqWin32FFI.c 32 bit 64 bit tbd
unix i686-pc-linux-gnu x86-sysv.c+x86-sysv-asm.S 32 bit 32 bit GREEN
unix i686-pc-linux-gnu x86-sysv.c+x86-sysv-asm.S 32 bit 64 bit GREEN
unix i686-pc-linux-gnu any-libffi.c 32 bit 32 bit GREEN
unix i686-pc-linux-gnu any-libffi.c 32 bit 64 bit GREEN
unix x86_64-unknown-linux-gnu any-libffi.c 64 bit 32 bit GREEN
unix x86_64-unknown-linux-gnu any-libffi.c 64 bit 64 bit GREEN
unix x86_64-unknown-linux-gnu x86_64-sysv.c+x86_64_sysv-asm.S 64 bit 32 bit Not implemented(*)
unix x86_64-unknown-linux-gnu x86_64-sysv.c+x86_64_sysv-asm.S 64 bit 64 bit Not implemented(*)
unix ppc-darwin.c+ppc-darwin-asm.S ? 32 bit Needs testing(**)
unix ppc-darwin.c+ppc-darwin-asm.S ? 64 bit Needs testing(**)
unix ppc-sysv.c+ppc-sysv-asm.S ? 32 bit Needs testing(**)
unix ppc-darwin.c+ppc-darwin-asm.S ? 64 bit Needs testing(**)
Mac OS ... (should be easy update)
RiscOS ... (no FFI implementation?)
related to 0006987assigned lewis signed32BitValueOf:, signed64BitValueOf: etc. broken 
related to 0007720assigned lewis FFI silently accept a 64bits argument > LLONG_MAX instead of failing 
 ffi-patches-5-dtl.zip [^] (26,996 bytes) 11-28-08 16:25
 FFI-primitiveFFIIntegerAt-dtl-M6987-M7237.1.cs [^] (2,773 bytes) 04-03-09 02:48

Notes
(0013074)
lewis   
04-03-09 02:53   
FFI-primitiveFFIIntegerAt-dtl-M6987-M7237.1.cs is a fix for an FFI issue reported in Mantis 6987 in the test cases FFITestCase.st (see attachments to 0006987). This fix should be applied after the 64-bit FFI updates in order to fully resolve the issues in 0006987. Note that FFI-primitiveFFIIntegerAt-dtl-M6987-M7237.1.cs requires an update to sqMemoryAccess.h in the platform sources.
(0013889)
lewis   
10-23-10 16:59   
This issue affects VM, a plugin in VMMaker, the image, and the external FFI package. VM issues are a prerequisite to fixing the rest, so recategorize to "VM" and assign it to myself.