* Differ UVL and DX LVARs in IR1 component printout.
* %LISTIFY-REST-ARGS treats DX in the same way as LIST.
* Replace (SETF (FUN-INFO-STACK-ALLOCATE-RESULT ...)) with
DEFOPTIMIZER.
* DEFOPTIMIZER interns FUN-INFO-* into SB[!-]C.
* Physenv analysis does not insert %DYNAMIC-EXTENT-END when not
needed.
* Pull Christophe[?] out of hell: replace *DYNAMIC-EXTENT* hack with
MAYBE-PSEUDO-ATOMIC macro.
* Changed representation of LVAR-DYNAMIC-EXTENT: now it is a CLEANUP
or NULL.
* LET-variable substitution does not break stack allocation.
* DX propagation in SUBSTITUTE-LVAR-USES.
This is an EXPERIMENTAL branch, devoted to implementation of
stack-allocating of dynamic-extent arguments in local calls.
* Annotate DX LVARs of arguments during local call
recognition; areas of DX are protected with CLEANUPs;
* the final decision on stack allocation is made by physical
anvironment analysis with help of new "optimizer" kind
STACK-ALLOCATE-RESULT;
* stack analysis finds appropriate places to free stack; note,
that stack-allocated objects cannot be moved;
* LIST and LIST* on X86 can allocate result on stack.
Note, that this version does not work on anything except X86.
Un-32-bit-ify bignum.lisp in various ways, even trying to
do a quick fixup on the comments to remove 32-bit
assumptions. Hasn't been tested with a real 64-bit
implementation, mind you.
There's a *lot* of code for doing bignum digit divides
(anything prefixed with #!+32x16-divide); no platform
currently uses it, but it might be worth twiddling with
the code to see if it's an improvement over the
VOP currently implementing %FLOOR. Certainly it'd be
nice to move more code into Lisp-land.
* Detect infinite recursion in require, and signal a
reasonable error before running out of file-handles.
* Prettier REQUIRE cross-reference in the manual, even
though this makes it slightly more brittle.
* Delete unused MAKE-LOAD-FORM for ENCAPSULATED-CONDITION,
which was accidentally left over from the first round of
COMPILER-ERROR refactoring.
* Indulge in a little OAOOM, getting the full
ENCAPSULATED-CONDITION into the cross-compiler, so that
we can have sensible error messages during build.
Oops: the recent move of N-WORD-BYTES from target/parms.lisp to
generic/early-vm.lisp broke build on Sparc, and in all likelihood on
PPC as well. Moved NUMBER-STACK-DISPLACEMENT a tad later in the
build (from target/parms.lisp to target/vm.lisp) and all is well
with Sparc. PPC not tested.
* SB!VM:WORD-LOGICAL-FOO transforms were being defined per-backend,
when in reality they can be shared. Make it so.
* The `length' slot in SB!VM:PRIM-SLOT-OBJECT wasn't being used;
delete it, but retain the :LENGTH option in
SB!VM:DEFINE-PRIMITIVE-OBJECT, because that *is* being used.
(mostly to generate offsets for GENESIS header files)
* Start using Helmut Eller's cute computed features expression
to distinguish between 32-bit and 64-bit pieces of code.
Particularly useful because architecture names are not
hardcoded; this idiom may have to be squirreled away in a
function somewhere.
* SB!VM:WORD-SHIFT and SB!VM:N-WORD-BYTES were being defined
the same way in every backend; move their definitions to
generic/early-vm for MORE OOAO. Tidy up comments in various
backends for remaining constants--you can almost see the
common code cut-and-pasted in each backend...
Fix bug in ctor optimization reported by Axel Schairer
cmucl-help 2004-08-05:
... quote the key initargs if we're going to call a :before
or :after initialization method;
... write a test case based on his example.
Inline allocation on the x86 isn't a universal win.
... OK, then, optimize for the increasingly-common case
(high-spec machines)
... and provide a backend-subfeature for those advanced users
who know where their sbcl is going to run.
Improve metacycle resolution (from test case from Bruno Haible
"vicious metacycle when ..." sbcl-devel 2004-08-02)
... find the slot reader specialized on the nearest class in the
CPL, not just in the identical class;
... incorporate Bruno's test case.
* Rename {32,64}BIT-LOGICAL-FOO to WORD-LOGICAL-FOO in all ports.
This builds and passes all tests on x86, but I am unsure about
its effects on other ports.
* Declare SB!VM:WORD with DEF!TYPE so it is known to both the
host compiler and the cross-compiler (and we can use it in
DEFKNOWN declarations, e.g.)
* Fix errors in debug.impure.lisp test
MORE FASTER BIGNUMS
... merge Juho Snellman's bignum-gcd improvement (sbcl-devel
2004-08-02)
... don't wait for sparc numbers since accidents occurred with
source trees.
SB-POSIX enhancements
... fork, wait and waitpid from Thomas Burdick (sbcl-devel
2004-05-10)
... C wrappers for waitpid macros
... chroot from Istvan Marko (sbcl-devel 2004-06-07)
Implement INPUT-STREAM-P and OUTPUT-STREAM-P methods on
FUNDAMENTAL-STREAM
... should do the right thing, even in the presence of multiple
inheritance.
LESS MAGIC NUMBERS (and LESS GRAMMAR)
... removed a fair number of numeric constants from alpha support
files, replacing them with their symbolic equivalents from
generic/early-vm.lisp. probably haven't rooted out all of
the offenders, but it's a start.
Alpha/Tru64 build now completes make-{host,target}-1.sh
... fix new LOGCOUNT vop (*cringe*)
... setpgrp() fix for RUN-PROGRAM's C support
... -taso flag now properly passed to cc
... assembly code rearranged to satisfy Digital's as
Merge partly-working fix for bug 61
... I think this fixes it on sparc, ppc and maybe mips.
... alpha is broken because it seems that just about every
backtrace has a "bogus stack frame", maybe arising from
the PAL stuff? Dunno.
... x86 is broken because, well, erm, dunno.
* Move documentation for SB-BSD-SOCKETS into user manual,
deleting docs (FAQ, TODO, NEWS, and doc.lisp remain yet).
* Automatically generate class-precedence-list information
for classes and conditions in the manual, ditto for
documented slots.
* Start documentation for each contrib on a new page for
clarity. (twiddle, twiddle)
Fix the logic in computing symbols for parse-vop-operands
... the count was all wrong. Fix it.
... (bug is detected in make-host-2, so if I've got it wrong
again it'll show up: but this works on the alpha)
Fix for division-of-integer-by-constant-zero bug
... don't perform the 2^k transform for k = -1 (which when
rounded to an integer gives zero...)
... tests.
Inline allocation for GENCGC ...
... add allocation-inline, which does direct access to
allocation region fields based on %fs (for threads)
or &boxed_region (unithread), falling through to
assembler routines and eventual call to alloc()
if we've run out of space in the region
... relevant assembler glue, partly borrowed from CMUCL
but with changes to do thread-local access when appropriate
... patch alloc() to use boxed_region instead of
all_threads->region on unithread builds
... clean up cut/pasted code in allocation-notinline
* Display foreign function names in backtraces on platforms
with dladdr. Essentially a port of Helmut Eller's patch
for CMUCL. Works fine on x86 and Sparc at least.
* Clean up some spurious sb-alien package prefixes from
foreign.lisp while at it.
* Fixed: mutually referent alien structure definitions.
Test for the same. Reported by Rick Taube on sbcl-help
sbcl-help 26 Jul 2004.
* Fixed: WITH-ALIEN object can now refer to structures
locally defined in the same WITH-ALIEN. Test for the
same.
Just for fun: implement the Intel prefetch instructions, and
conditionally use (one of) them in typetag checking
... no, it doesn't make anything noticeably faster; why do you
ask?
Fix backtrace on ppc. (Brian Downing sbcl-devel 2004-07-19)
... use BUG to report breakdown in logic;
... some tests fail on x86, so comment them out;
... untested as yet on non-x86 non-ppc.
Improve BIGNUM-GCD ever so slightly
... BIGNUM-INDEX isn't actually usefully INDEX, because we
require the ability to index individual bits. Divide
the type by 32, then.
... rearrange bignum.lisp slightly to declare types of functions
before their use. (Aside: I'm not sure why I need the
type declaration, given that the final compiler can
derive the type fine. Maybe the cross-compiler is
lobotomized in some significant way here?)
Fix for one egregious excessive use of symbols, in VOP parsing.
Symbols for arguments, results and temporaries must be unique
per-VOP, not necessarily globally unique. Ensure that this is
so, saving approximately 2000 symbols on x86.
Implement MAP-REFERENCING-OBJECTS, and make the implementation
of LIST-REFERENCING-OBJECTS use it.
... note potential badness of cutoff point in space search.
(could this be the problem in ROOM T?)
Improvements to stale-symbols script.
... if there is more than one reference, don't bother chasing
all the others down;
... closures can contain stuff;
... print symbols and references a little more nicely.
Various rather urgent sb-grovel and sb-bsd-sockets fixes.
* sb-grovel uses WITH-ALIEN now for the WITH-* macros,
to allow use of SB-ALIEN:ADDR on variables allocated that way.
* sb-bsd-sockets: name-service code now return addresses as vectors
again.
* sb-bsd-sockets: fix socket-receive into relative workingness
again: use (deref (deref array) i) instead of (deref array i);
type-convert the results
reduced (ROOM T) functionality down to just (ROOM),
since (ROOM T) is flaky on my machine again and
I don't know how to fix it
logged the problem in BUGS
Make socket-receive allocate a buffer if it's passed a length arg.
Reported on CLL by Miguel Arroz; I removed that bit of code in .10
and forgot to put it back in.