[squeak-dev] Loading FFI is broken

Frank Shearar frank.shearar at gmail.com
Tue Feb 26 09:51:19 UTC 2013


(Installer monticello mc: (MCHttpRepository new location:
'http://source.squeak.org/FFI'))
    install: 'FFI-Kernel-eem.24.mcz'. "There's a -tbn.25, but that's
not important to this post"

fails with an MNU: ExternalFunction class >> callingConventionFor:.

As far as I can see what's happening is this:
* during the loading of the mcz ExternalFunction is defined,
* a method is parsed (#XOpenDisplay, which has a pragma <cdecl:
X11Display* ''XOpenDisplay'' (char*) module:''X11''>)
* Parser >> externalFunctionDeclaration checks whether
ExternalFunction is defined.
* It is, so tries to evaluate `descriptorClass callingConvention:
here` and boom, because ExternalFunction class >>
callingConventionFor: _has not been loaded yet_.

I've seen this kind of issue with Helvetia code: sometimes you simply
have to load class-side methods first.

Thoughts? Lukas worked around the issue with his Helvetia code by
directly patching Monticello, and ripping out its "try to do atomic
loading" mechanism.

frank


More information about the Squeak-dev mailing list