[squeak-dev] Re: [Cuis] FFI problem with ExternalAddress
juan at jvuletich.org
Tue Feb 16 19:14:02 UTC 2010
Andreas Raab wrote:
> Hi Phil -
> The only thing that comes to mind is the special objects array. Try
> executing "Smalltalk recreateSpecialObjectsArray" to ensure it is
> initialized correctly, if that doesn't help check (Smalltalk
> specialObjectsArray copyFrom: 44 to: 48) which should say
> #(ExternalAddress ExternalStructure ExternalData ExternalFunction
> - Andreas
Thanks for answering Andreas. Just for the record: in
#recreateSpecialObjectsArray Cuis includes the classes you say, but with
#at:ifAbsent: , as they are usually not present. So, evaluating
Smalltalk recreateSpecialObjectsArray should do it.
Phil, I believe you are the first to try FFI on Cuis. It is good to know
that it is almost running! Please keep us posted on your progress.
> Phil (list) wrote:
>> I'm not sure whether my problem is specific to Cuis or is more
>> generally related to installing FFI. I've loaded FFI (from
>> FFI-Kernel-ar9) by extracting the archive, filing in the extracted
>> .st file, and in a workspace executing:
>> (Smalltalk at: #ExternalType) initialize.
>> (Smalltalk at: #ExternalStructure) compileAllFields.
>> FFI appears to be working at least somewhat (i.e. I'm able to make
>> basic OpenGL calls which are behaving as expected) but when I attempt
>> to work with externally allocated memory, I'm having problems. With
>> the following example:
>> extern := ExternalAddress allocate: 12.
>> I observe the following behavior:
>> 1) Do it executes without error
>> 2) Most things that attempt to look at the result (i.e. print it)
>> crash the image
>> 3) extern class returns CompiledMethod
>> 4) Accessing it with what should be valid indexes using byteAt: and
>> byteAt:put: either result in an invalid index error or crashes the
>> The VM I'm using is 4.2.2 on OS X and I'm not able to reproduce the
>> behavior in any of my non-Cuis images and am curious if there's an
>> installation/configuration step I've missed re: FFI or if there is a
>> bug specific to Cuis that might be causing this issue?
More information about the Squeak-dev