Merge patch from James Bielman fixing self-build under Win32. ... a little bit of an accident ensued; I ran canonicalize-whitespace on .sh files, which seemed to work (except on wc.sh) until it scribbled all over make.sh, confusing the shell interpreter utterly. ... the resulting files have built the system, nevertheless.
CLISP build megapatch ... mostly putting #-SB-XC in front of :COMPILE-TOPLEVEL, because clisp gives a full warning for function and macro redefinition; ... workaround clisp's buggy pretty printer by not exercising it as much: use (INHIBIT-WARNINGS 3); ... explicit :INITIAL-ELEMENT 0 when we're using 0 to mean "uninitialized" in MAKE-ARRAY; ... SPECIAL-OPERATOR-P isn't a good test on the host for what can become a target macro; ... slightly more portable floating point logic: Explicitly set *READ-DEFAULT-FLOAT-FORMAT* so that we don't create host LONG-FLOATs by accident; LOAD-TIME-VALUE magic for negative floating point zeros; Minor associated text file frobbage ... braindump some unrelated TODO items Obligatory runtime code improvement ... fix one warning in gencgc.h
Committed patch for gencgc refactoring based on work done on threads branch. ... to make header file management a lot simpler, and allow the use of interesting typedefs in genesis :C-TYPE slot options, we split runtime.h into lots of smaller files that can be (semi-)independently included. ... all GC and GCish functions now have the same interface, so no need for (eq *internal-gc* #'collect-garbage) test in SUB-GC ... current_region_end_addr and current_region_free_pointer go away, eliminating potential for weird bugs when they're not synchronized properly. Yay OAOO ... disabled (actually, removed) inline allocation, as it depended on old current_region_* (see above) and appears to make not a lot of actual difference to run times anyway pseudo-atomic support is now always compiled in. I can see no good reason for not having it ... much code in alloc() collapsed. Also alloc() no longer attempts to drop its PA and do a collection in the middle of allocation - instead it uses the existing maybe_gc flag to indicate that collection should happen when the allocation is done. Possibly this has bad effects when trying to allocate an object bigger than available dynamic space, but that would fit if a GC were done first. Given the (complete lack of) error handling for out-of-memory conditions in this and all previous SBCL versions, it would be a foolish programmer who was depending on this anyway, though.
(This system state is seriously screwed up. It did build, both on Linux and on OpenBSD, but signalled an error after writing out sbcl.core on OpenBSD, and although it runs a little both on Linux and on OpenBSD, it hangs in the regression tests. It also has some temporary hacks marked REMOVEME, including one which suppresses PURIFY when building the system (!).) made the system build on OpenBSD again.. ..stubbed stuff out as a quick fix to the problem of FFI to 64-bit stat.st_size tried to make the system run on OpenBSD again.. ..initialized current_dynamic_space, since it's now used instead of DYNAMIC_SPACE_START in PURIFY ..added new assertions about GENCGC alloc_region stuff being reset when it should be renamed Lisp-level struct stat stuff to struct wrapped_stat tried to tidy up Lisp-level stat stuff; removed mysterious (STRING= NAME "") behavior from UNIX-STAT added slam.sh to help in low-level compile-and-try cycle pulled alloc_region-is-reset logic out into separate functions, and added more assertions on it (hunting for a bug which broke the old assertions) renamed gc_alloc_large to gc_alloc_possibly_large, and gc_quick_alloc_large_unboxed to gc_quick_alloc_unboxed_possibly_large enabled various GC checks, e.g. gencgc_zero_check=1 deleted unused (and bizarre..) gencgc_verify_zero_fill() turned off PURIFY in order to get the system to build, since PURIFY seems to be misbehaving (leaving INIT-FUNCTION above the cutoff address..)