Fix x86-64 GC error (reported by Kevin Rosenberg on sbcl-devel, "Regression error sbcl-amd64 with CLSQL test suite"). * The alien stack was aligned on four byte boundaries, so the contents of *ALIEN-STACK*'s value slot could sometimes look like an (invalid) header word. Align to eight bytes instead.
x86-64 fixes: * Implement arrange_return_to_lisp_function to make stack exhaustion detection work. * Fix select on fds > 32 on 64-bit platforms (patch by Cheuksan Edward Wang). * Copy apd's x86 fix for DATA-VECTOR-SET-C overflow from 0.8.18.35. * Use -fPIC for building shared libraries in tests/foreign.test.sh on x86-64. * Remove i586_bzero from x86-64-assem.S.
* When non-local lexical exits are compiled with (SAFETY 0), pass the unwind block without packing it into a VALUE-CELL. This disables checking of tag extent, but also eliminates one source of heap allocation in dynamic-extent closures. * Disable intrumenting of more-entries (bug reported by Robert J. Macomber).
Some number-related x86-64 fixes. * Fix backend bug in negative counts for ASH. (Patch by Lutz Euler on sbcl-devel, 2005-01-09). Add some more ASH tests. * Cargo-cult signed modular arithmetic changes from the x86 backend. * Remove optimization of constant multiplication to shifts, adds and leas (except for the simple cases of 2^x, 3, 5, 9) from the x86-64 backend. It was a lot of code that's not really of any use on any existing x86-64 processor. * Fix 32-bit assumptions in deftransform of word-sized RANDOM integers.
Some number-related x86-64 fixes. * Fix backend bug in negative counts for ASH. (Patch by Lutz Euler on sbcl-devel, 2005-01-09). Add some more ASH tests. * Cargo-cult signed modular arithmetic changes from the x86 backend. * Remove optimization of constant multiplication to shifts, adds and leas (except for the simple cases of 2^x, 3, 5, 9) from the x86-64 backend. It was a lot of code that's not really of any use on any existing x86-64 processor. * Fix 32-bit assumptions in deftransform of RANDOM for word-sized integers.
Improvements to the statistical profiler. * Add support for x86-64. * Time spent in foreign functions was previously attributed to "elsewhere". Now reported individually for all of them, and "foreign function __open", "foreign function sin", etc. * Walk the call stack to a depth of 8 instead of relying only on the PC and RA from os-context-t (currently only on x86/x86-64). Thus instead of just knowing that a lot of time is being spent on (for example) bignum operations, we might find out where the bignum operations are being initiated. * Add a column for accrued time to the flat report. * Add kludgy workaround for invalid frame-pointers in the os-context-t structure causing segfaults.
Manual build fixes. * Allow the manual to be built with an sbcl in a non-standard place. This is supposed to help the autobuilder/benchmarker build a manual without jumping through too many hoops. * Add a docstring to sb-md5's md5sum-string, to make the manual happy again.
Merge Robert J. Macomber's octets3.lisp (sbcl-devel 2005-01-06) patch. ... use WITH-ARRAY-DATA for bounds checking and simple-array extraction; ... implement ASCII external format (and MALFORMED-ASCII condition); ... don't need CODE-RANGE type, we can use CHAR-CODE; ... make it compile in #!-SB-UNICODE; ... one or two other frobs. I don't think this is in its final form even now, but it's good enough, and... Implement SB-MD5:MD5SUM-STRING, calling STRING-TO-OCTETS ... adjust md5-tests.lisp to use it; ... tests now pass. Hooray.
Fix a few AMD64 issues. * Fix broken logic in SIGNED-BYTE-32-P for negative numbers when NOT-P is true. (Reported by Todd Sabin on sbcl-devel, 2005-01-06). * Correct incorrectly spelled type names in DUMP-I-VECTOR. (Patch by Cheuksan Edward Wang). * Sap-operations on floats were using broken x87 code. Replace with SSE. (Patch by Cheuksan Edward Wang).
CLISP build fixes ... CUT-TO-WIDTH now takes three arguments; ... *LOAD-PATHNAME* and *COMPILE-FILE-PATHNAME* aren't absolute in CLISP, sigh. Use -TRUENAME* variants instead. ... PRINT not PRIN1 the random state after the huge bignum, otherwise most of the time is spent in the pretty printer formatting the random state to column 700000000000 ... bit more NEWS on the x86-64 merge.
Fix a few problems with the AMD64 merge. * Fix genesis of double-floats on 32-bit little-endian platforms. * Remove Makefile kludge for forcing shared libraries in contribs to use the 32-bit mode on AMD64. * Remove extra argument to MY-MAKE-WIRED-TN in x86-64/c-call.lisp (prevented using CMUCL as host, since it gives a full warning). * Add a NEWS entry for the new port.
Merge x86-64-again branch onto HEAD. Many, many, many 64-bit cleanups in code/, runtime/, compiler/, compiler/generic/ New SAP-REF-WORD and friends. Various fixes to the x86-64 backends (and addition of assembly/ and runtime/ files necessary). Implementation of Unicode-related stuff by CSR. Signed modular arithmetic has not yet been implemented. A number of tests fail: ... alien.impure.lisp: enum <-> integer array conversion ... exhaust.impure.lisp: "deferred gubbins" ... float.pure.lisp: float infinities ... foreign.test.sh: "deferred gubbins" It's possible that this merge will cause alpha32 to break in an interesting way, probably related to undefined-alien. Needs debugging. Other architectures have been tested, but of course it's possible that something has gone wrong. Though I (CSR) am merging this, the vast majority of the work was done by Juho Snellman (building on Dan Barlow's initial work to get it into executing lisp code in cold-init), with guest appearances by Cheuksan Edward Wang and Vincent Arkesteijn.
… value of a setq assignment in any lexenv.