Commit [b9e94e]  Maximize  Restore  History

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.

Christophe Rhodes Christophe Rhodes 2006-10-06

1 2 > >> (Page 1 of 2)
changed NEWS
changed package-data-list.lisp-expr
changed src
changed src/code
changed src/code/stubs.lisp
changed src/code/target-defstruct.lisp
changed src/code/target-type.lisp
changed src/compiler
changed src/compiler/alpha
changed src/compiler/alpha/alloc.lisp
changed src/compiler/alpha/cell.lisp
changed src/compiler/generic
changed src/compiler/generic/objdef.lisp
changed src/compiler/generic/vm-ir2tran.lisp
changed src/compiler/globaldb.lisp
changed src/compiler/hppa
changed src/compiler/hppa/alloc.lisp
changed src/compiler/hppa/cell.lisp
changed src/compiler/ir2tran.lisp
changed src/compiler/mips
changed src/compiler/mips/alloc.lisp
changed src/compiler/mips/cell.lisp
changed src/compiler/ppc
changed src/compiler/ppc/alloc.lisp
changed src/compiler/ppc/cell.lisp
NEWS Diff Switch to side-by-side view
Loading...
package-data-list.lisp-expr Diff Switch to side-by-side view
Loading...
src
Directory.
src/code
Directory.
src/code/stubs.lisp Diff Switch to side-by-side view
Loading...
src/code/target-defstruct.lisp Diff Switch to side-by-side view
Loading...
src/code/target-type.lisp Diff Switch to side-by-side view
Loading...
src/compiler
Directory.
src/compiler/alpha
Directory.
src/compiler/alpha/alloc.lisp Diff Switch to side-by-side view
Loading...
src/compiler/alpha/cell.lisp Diff Switch to side-by-side view
Loading...
src/compiler/generic/objdef.lisp Diff Switch to side-by-side view
Loading...
src/compiler/generic/vm-ir2tran.lisp Diff Switch to side-by-side view
Loading...
src/compiler/globaldb.lisp Diff Switch to side-by-side view
Loading...
src/compiler/hppa
Directory.
src/compiler/hppa/alloc.lisp Diff Switch to side-by-side view
Loading...
src/compiler/hppa/cell.lisp Diff Switch to side-by-side view
Loading...
src/compiler/ir2tran.lisp Diff Switch to side-by-side view
Loading...
src/compiler/mips
Directory.
src/compiler/mips/alloc.lisp Diff Switch to side-by-side view
Loading...
src/compiler/mips/cell.lisp Diff Switch to side-by-side view
Loading...
src/compiler/ppc
Directory.
src/compiler/ppc/alloc.lisp Diff Switch to side-by-side view
Loading...
src/compiler/ppc/cell.lisp Diff Switch to side-by-side view
Loading...
1 2 > >> (Page 1 of 2)