0.9.17.8:
MORE THREADSAFE FUNCALLABLE-INSTANCE
... in a threaded world, we can't set the function and lexenv
of a funcallable instance separately, because some other
thread might inconveniently funcall the object 'twixt
the one and the other.
... instead, make the funcallable-instance-function a
fully-fledged slot, and give a funcallable-instance a
trampoline which knows how to call it.
... which means implementing this strategy for $n$
architectures. Tested on x86, x86-64, ppc, alpha and
sparc; completely untested on mips, and unimplemented
on hppa.
This removes some of the complexity in calling closures (the
closure-self slot is now redundant, as is the extra
indirection). Other miscellaneous fixes:
* extract-fun-type worked only by accident;
* new magic :init :funcallable-instance-tramp for primitive
objects
* verify_space() need no longer worry its little brain about
undefined_tramp and closure_tramp (I think)
* test case for threaded funcallable-instance interaction.
36 files changed: