Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

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

1 2 > >> (Page 1 of 2)
changed contrib
changed contrib/sb-bsd-sockets
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
changed doc/beyond-ansi.sgml
changed doc/ffi.sgml
changed doc/internals-notes
changed doc/internals-notes/threading-specials
changed doc/intro.sgml
changed package-data-list.lisp-expr
changed src
changed src/compiler
changed src/compiler/alpha
changed src/compiler/alpha/macros.lisp
changed src/compiler/fndb.lisp
changed src/compiler/hppa
changed src/compiler/hppa/macros.lisp
changed src/compiler/mips
changed src/compiler/mips/macros.lisp
changed src/compiler/ppc
changed src/compiler/ppc/macros.lisp
changed src/compiler/sparc
changed src/compiler/sparc/macros.lisp
changed src/compiler/x86
changed src/compiler/x86/c-call.lisp
changed src/compiler/x86/macros.lisp
changed src/runtime
changed src/runtime/gencgc.c
changed version.lisp-expr
contrib
Directory.
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
Directory.
doc/beyond-ansi.sgml Diff Switch to side-by-side view
Loading...
doc/ffi.sgml Diff Switch to side-by-side view
Loading...
doc/internals-notes
Directory.
doc/internals-notes/threading-specials Diff Switch to side-by-side view
Loading...
doc/intro.sgml Diff Switch to side-by-side view
Loading...
package-data-list.lisp-expr Diff Switch to side-by-side view
Loading...
src
Directory.
src/compiler
Directory.
src/compiler/alpha
Directory.
src/compiler/alpha/macros.lisp Diff Switch to side-by-side view
Loading...
src/compiler/fndb.lisp Diff Switch to side-by-side view
Loading...
src/compiler/hppa
Directory.
src/compiler/hppa/macros.lisp Diff Switch to side-by-side view
Loading...
src/compiler/mips
Directory.
src/compiler/mips/macros.lisp Diff Switch to side-by-side view
Loading...
src/compiler/ppc
Directory.
src/compiler/ppc/macros.lisp Diff Switch to side-by-side view
Loading...
src/compiler/sparc
Directory.
src/compiler/sparc/macros.lisp Diff Switch to side-by-side view
Loading...
src/compiler/x86
Directory.
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/runtime
Directory.
src/runtime/gencgc.c Diff Switch to side-by-side view
Loading...
version.lisp-expr Diff Switch to side-by-side view
Loading...
1 2 > >> (Page 1 of 2)