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 src/code/stubs.lisp
changed src/code/target-defstruct.lisp
changed src/code/target-type.lisp
changed src/compiler/alpha/alloc.lisp
changed src/compiler/alpha/cell.lisp
changed src/compiler/generic/objdef.lisp
changed src/compiler/generic/vm-ir2tran.lisp
changed src/compiler/hppa/alloc.lisp
changed src/compiler/hppa/cell.lisp
changed src/compiler/mips/alloc.lisp
changed src/compiler/mips/cell.lisp
changed src/compiler/ppc/alloc.lisp
changed src/compiler/ppc/cell.lisp
changed src/compiler/sparc/alloc.lisp
changed src/compiler/sparc/cell.lisp
changed src/compiler/x86-64/alloc.lisp
changed src/compiler/x86-64/cell.lisp
changed src/compiler/x86-64/system.lisp
changed src/compiler/x86/alloc.lisp
changed src/compiler/x86/cell.lisp
changed src/compiler/x86/system.lisp
changed src/compiler/globaldb.lisp
changed src/compiler/ir2tran.lisp
changed src/runtime/alpha-assem.S
changed src/runtime/gc-common.c
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/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/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/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/alloc.lisp Diff Switch to side-by-side view
Loading...
src/compiler/ppc/cell.lisp Diff Switch to side-by-side view
Loading...
src/compiler/sparc/alloc.lisp Diff Switch to side-by-side view
Loading...
src/compiler/sparc/cell.lisp Diff Switch to side-by-side view
Loading...
src/compiler/x86-64/alloc.lisp Diff Switch to side-by-side view
Loading...
src/compiler/x86-64/cell.lisp Diff Switch to side-by-side view
Loading...
src/compiler/x86-64/system.lisp Diff Switch to side-by-side view
Loading...
src/compiler/x86/alloc.lisp Diff Switch to side-by-side view
Loading...
src/compiler/x86/cell.lisp Diff Switch to side-by-side view
Loading...
src/compiler/x86/system.lisp Diff Switch to side-by-side view
Loading...
src/compiler/globaldb.lisp Diff Switch to side-by-side view
Loading...
src/compiler/ir2tran.lisp Diff Switch to side-by-side view
Loading...
src/runtime/alpha-assem.S Diff Switch to side-by-side view
Loading...
src/runtime/gc-common.c Diff Switch to side-by-side view
Loading...
1 2 > >> (Page 1 of 2)