Commit [b7eed5] Maximize Restore History

0.8.3.23

Exciting gencgc hacking: SB-SYS:WITH-PINNED-OBJECTS

When passing Lisp objects to foreign code, it is important
that GC doesn't change the object's address as the foreign
code's pointers to it won't be updated. Traditionally this is
done using WITHOUT-GCING, but that's not ideal in a threaded
system where one thread may be doing a blocking alien call and
other threads would like to continue as normal.

So, instead we shove pointers to the important objects on the
C stack where they will cause the pages pointed to to be
pinned in place using preserve_pointers. Additionally we make
a small change to gencgc to ensure that they _stay_ pinned in
subsequent GCs

On ports that use cheneygc we can't do this, so
WITH-PINNED-OBJECTS is just an alias for WITHOUT-GCING. As
these ports don't have threads anyway, that's not a major
inconvenience.

Small updates to doc/internals-notes/threading-specials,
slightly larger updates to comments regarding ALLOCATION
and PSEUDO-ATOMIC macros

Documentation update to the FFI chapter

Daniel Barlow Daniel Barlow 2003-09-02

changed contrib/sb-bsd-sockets/foreign-glue.lisp
changed contrib/sb-bsd-sockets/name-service.lisp
changed contrib/sb-bsd-sockets/sockets.lisp
changed doc/internals-notes/threading-specials
changed doc/beyond-ansi.sgml
changed doc/ffi.sgml
changed doc/intro.sgml
changed src/compiler/alpha/macros.lisp
changed src/compiler/hppa/macros.lisp
changed src/compiler/mips/macros.lisp
changed src/compiler/ppc/macros.lisp
changed src/compiler/sparc/macros.lisp
changed src/compiler/x86/c-call.lisp
changed src/compiler/x86/macros.lisp
changed src/compiler/fndb.lisp
changed src/runtime/gencgc.c
changed package-data-list.lisp-expr
changed version.lisp-expr
contrib/sb-bsd-sockets/foreign-glue.lisp Diff Switch to side-by-side view
Loading...
contrib/sb-bsd-sockets/name-service.lisp Diff Switch to side-by-side view
Loading...
contrib/sb-bsd-sockets/sockets.lisp Diff Switch to side-by-side view
Loading...
doc/internals-notes/threading-specials Diff Switch to side-by-side view
Loading...
doc/beyond-ansi.sgml Diff Switch to side-by-side view
Loading...
doc/ffi.sgml Diff Switch to side-by-side view
Loading...
doc/intro.sgml Diff Switch to side-by-side view
Loading...
src/compiler/alpha/macros.lisp Diff Switch to side-by-side view
Loading...
src/compiler/hppa/macros.lisp Diff Switch to side-by-side view
Loading...
src/compiler/mips/macros.lisp Diff Switch to side-by-side view
Loading...
src/compiler/ppc/macros.lisp Diff Switch to side-by-side view
Loading...
src/compiler/sparc/macros.lisp Diff Switch to side-by-side view
Loading...
src/compiler/x86/c-call.lisp Diff Switch to side-by-side view
Loading...
src/compiler/x86/macros.lisp Diff Switch to side-by-side view
Loading...
src/compiler/fndb.lisp Diff Switch to side-by-side view
Loading...
src/runtime/gencgc.c Diff Switch to side-by-side view
Loading...
package-data-list.lisp-expr Diff Switch to side-by-side view
Loading...
version.lisp-expr Diff Switch to side-by-side view
Loading...