This parameterizes the GC a bit to make it thread-ready.
commit2d525b793f1b0fd2b6f66881310bec8684bceffe
authorTom Tromey <tromey@redhat.com>
Wed, 15 Aug 2012 19:01:36 +0000 (15 13:01 -0600)
committerTom Tromey <tromey@redhat.com>
Wed, 15 Aug 2012 19:01:36 +0000 (15 13:01 -0600)
tree932fb8b75974ac4c16ecfc5bc216fe362b0a4d27
parent68b32482437e05f0994c4dd0ab5b0c27d39f0f6d
This parameterizes the GC a bit to make it thread-ready.

The basic idea is that whenever a thread "exits lisp" -- that is,
releases the global lock in favor of another thread -- it must save
its stack boundaries in the thread object.  This way the boundaries
are always available for marking.  This is the purpose of
flush_stack_call_func.

I haven't tested this under all the possible GC configurations.
There is a new FIXME in a spot that i didn't convert.

Arguably all_threads should go in the previous patch.
src/alloc.c
src/bytecode.c
src/eval.c
src/lisp.h
src/thread.c
src/thread.h