* Fix from Cyrus Harmon, 2005-10-19, "PPC alignment redux" * When calling into C, OS X expects the stack to be 16-byte aligned or else C functions which use AltiVec see strange corruption
* back out the previous change to COMPUTE-RESTARTS. * make FIND-RESTART check the activity, not applicability, of a restart object passed in as an argument. => now both the Helmut Eller's case and ansi-tests pass. Although: I dispute COMPUTE-RESTARTS.10 and RESTART-BIND.20. See emails to sbcl-devel around Sun, 16 Oct 2005 13:12. The more radical changes outlined there are not part of this yet.
* it's PRINTED-AS-FUNCALLABLE-STANDARD-CLASS, not PRINTED-AS-CLOS-FUNCALLABLE-STANDARD-CLASS. * PARSE-FSPEC is a no-op -- kill it. * GBOUNDP and GMAKUNBOUND are null and useless wrappers -- kill them. Keep GDEFINITION and (SETF GDEFINITION) as they may become useful when FDEFINITION stops bypassing fwrappers/encapsulations.
* threads don't inherit values of specials from their parents anymore because: 1) dynamic-extent Suppose your package has a non-exported special, binds it, promises it's going to be dynamic extent and proceeds to call user code. The user code spawns a thread and the promise is broken. 2) gc It's hard to control giving out references to objects. Yeah, it's similar to 1), but the colour of the smoke is different. 3) scaling When starting up, a thread is given a snapshot of the parent thread's current values for dynamic variables. This means that the minimum memory required by a thread is proportional to the number of specials. 1) and 2) are addressed by this change, 3) is not. * not having lisp objects in unstarted threads allowed undoing thread start vs gc recomplication and un-reinstating STATE_STARTING
* nasty interrupt bug: 1) sigalrm handler is deferred 2) later it's run via sigtrap handler 3) handler does pa_alloc while sigtrap is blocked 4) gc is needed and another sigtrap is triggered by 3) 5) stupid Linux kernel sees that sigtrap is blocked and invokes the default handler (see http://groups.google.com/group/fa.linux.kernel/browse_frm/thread/455401a6837c72bf/865ea792a236299c) 6) coredump Adding SA_NODEFER to sigaction is enough for sane systems to fix this. Not for buggy Linux 2.6. A compile time test was added for sigaction and SA_NODEFER allowing the runtime to work around this bug (see interrupt.c). * added missing sigemptysets
More merging. Make non-purified cores suck less. * Do a non-conservative GC when saving a core without purifying. * Save critical bits of the page table in the core, to allow picking up the core without walking through the whole core. * The dynamic section of a core is picked up into a special non-collected generation (currently called "pseudo static" in the source, but I'm not attached to that name). * #ifdef out some fixup code that's not needed on x86-64. * Refactor save.c a bit.