0.8.12.42
Fix the threading problems revealed by Edi's CL-PPCRE tests ...
If target-arch.h is included before genesis/config.h, some
runtime files with inline expansion of get_spinlock get the
wrong version
Significantly change handling of thread exit: the
SIG_THREAD_EXIT handler just makes th->state=STATE_DEAD, does
not do all_threads surgery, does not call Lisp code and is no
longer deferrable, eliminating a problem where threads die at
the start of GC and become zombified so cannot be stopped for
GC
Instead we call thread exit handlers from reap_dead_threads(),
necessitating further changes in HANDLE-THREAD-EXIT, as it
can now be called from threads other than the parent of the
dead one
stop_the_world doesn't actually need to hold
all_threads_lock(), as it doesn't modify the all_threads
list. Likewise sig_stop_for_gc_handler(), which means the
sched_yield() kludge can go away