Juho Snellman [Mon, 30 Apr 2007 20:55:42 +0000 (20:55 +0000)]
1.0.5.14: make PURIFY a no-op on gencgc
* Purification doesn't really make any sense with gencgc, since we
have an uncollected generation with a write barrier these days.
* Apparently it had also bitrotted on ppc/gencgc between 1.0.0 and
1.0.4, causing crashes with software doing (SAVE-LISP-AND-DIE
... :PURIFY T), for example Maxima. (Reported by Rex Dieter)
* So make PURIFY a no-op on gencgc, and remove about 600 lines worth of
#ifdeffed OAOO violations from purify.c.
* Allows shrinking the static and read-only spaces into something
sensible (arbitrary value of 1MB selected), and moving all of them
closer together to reduce the virtual address space footprint.
* Move + shrink the linkage-table while we're at it.
Christophe Rhodes [Mon, 30 Apr 2007 11:26:08 +0000 (11:26 +0000)]
1.0.5.13: better wordbreaks in manual
Patch from Richard Kreuter, sbcl-devel 2006-12-22
Also fix the Gray input stream example to inherit from an input
stream rather than from an output stream.
Nikodemus Siivola [Mon, 30 Apr 2007 10:35:32 +0000 (10:35 +0000)]
1.0.5.12: fix threaded Linux builds
* Undo merge damage: missed one COMPARE-AND-EXCHANGE -> COMPARE-AND-SWAP rename.
Nikodemus Siivola [Mon, 30 Apr 2007 09:37:37 +0000 (09:37 +0000)]
1.0.5.11: fix non-threaded build
* SIG_STOP_FOR_GC only on threaded platforms.
* GET-MUTEX was broken for non-threaded builds.
Nikodemus Siivola [Sun, 29 Apr 2007 23:27:37 +0000 (23:27 +0000)]
1.0.5.10: interrupt-proofing SUB-GC
* When SUB-GC is entered with GC and interrupts enabled we cannot just
blithely set *GC-PENDING*, as unwinding from an interrupt would cause
us to run with GC blocked for an unbounded time: disable interrupts
before setting it.
Nikodemus Siivola [Sun, 29 Apr 2007 21:57:39 +0000 (21:57 +0000)]
1.0.5.9: experimental semi-synchronous deadlines
* WITH-DEADLINE provides an interface to a synchronous deadline/timeout
facility that can interrupt execution only on blocking IO and when
waiting on locks (latter Linux only for now.)
* DECODE-DEADLINE provides an interface that implementors of blocking
functions can use to hook into the deadline mechanism.
* Add SB-IMPL::*ON-DANGEROUS-SELECT* for debugging: can be used to
warn/ signal an error / obtain a backtrace when SBCL calls select
without a timeout while interrupts are disabled.
* Undocumented and unexported periodic polling functionality has been
removed from SERVE-EVENT, but can be reinstated should it be
desired.
Nathan Froyd [Sun, 29 Apr 2007 18:34:20 +0000 (18:34 +0000)]
1.0.5.8: always display package prefixes when symbols conflict
* Patch by Kevin Reid, sbcl-devel 2007-04-28.
Nikodemus Siivola [Sun, 29 Apr 2007 17:28:28 +0000 (17:28 +0000)]
1.0.5.7: missing test case for 1.0.4.40
* Also add a test-case for the bad type declatation fixed in PCL in
1.0.4.40.
Nikodemus Siivola [Sun, 29 Apr 2007 17:17:25 +0000 (17:17 +0000)]
1.0.5.6: compare-and-swap / instance-set-conditional refactoring
* Rename *-COMPARE-AND-EXCHANGE *-COMPARE-AND-SWAP.
* DEFINE-FULL-COMPARE-AND-SWAP, use it to implement
%INSTANCE-COMPARE-AND-SWAP (previously %INTANCE-SET-CONDITIONAL) on x86oids.
* Implement %SIMPLE-VECTOR-COMPARE-AND-SWAP. Not used right now, but required
by a forthcoming patch.
* Implement non-x86oid (non-threaded) versions of the above.
* Check that the slot isn't raw in DEFINE-STRUCURE-SLOT-COMPARE-AND-SWAP.
* Whitespace.
Nikodemus Siivola [Sun, 29 Apr 2007 16:19:29 +0000 (16:19 +0000)]
1.0.5.5: &ENVIRONMENT fixes
* Place the binding for &ENVIRONMENT in the correct scope for
ignore declarations.
* Place the local-decls return value from PARSE-DEFMACRO in the
right scope in DEFSETF.
* Tests.
Nikodemus Siivola [Sun, 29 Apr 2007 15:51:01 +0000 (15:51 +0000)]
1.0.5.4: signal handler consing causing GCs
* Skip GC attempt if interrupts are enabled but GC signals are
blocked in the context we would restore.
This can happen at least when a signal handler conses while GC
signals are blocked, so what we take a PendingInterrupt trap while
in the original handler.
Nikodemus Siivola [Sun, 29 Apr 2007 14:30:48 +0000 (14:30 +0000)]
1.0.5.3: compiling a SUBSEQ on a SIMPLE-VECTOR should not give notes
* One type declaration, one TRULY-THE, and two test-cases.
Nikodemus Siivola [Sun, 29 Apr 2007 14:04:17 +0000 (14:04 +0000)]
1.0.5.2: non-racy WITH-SPINLOCK-AND-WITHOUT-GCING
* It used to be possible for an interrupt or a GC request to come
in during the small window after RECEIVE-PENDING-INTERRUPTS, but
while we were running with interrupts and GC disabled. This would
leave it pending and block further ones -- without any guarantee
when the next one would come in.
Experimentally this could also deadlock GC, but the code path
leading to that is not entirely clear.
* WITHOUT-GCING can be implemented by using just a single UWP, so do
it like that.
Christophe Rhodes [Sun, 29 Apr 2007 08:51:56 +0000 (08:51 +0000)]
1.0.5.1: remove ldso-stubs.S in clean.sh
(patch from Timothy Ritchey sbcl-devel 2007-04-26)
William Harold Newman [Sat, 28 Apr 2007 18:47:58 +0000 (18:47 +0000)]
1.0.5:
release, will be tagged as sbcl_1_0_5
Nikodemus Siivola [Wed, 25 Apr 2007 10:07:23 +0000 (10:07 +0000)]
1.0.4.111: NEWS editing
* Hash-table functions aren't quite interrupt safe yet, aka brutal honesty.
* Missing dots.
Nathan Froyd [Tue, 24 Apr 2007 15:38:59 +0000 (15:38 +0000)]
1.0.4.110: make -sb-unicode builds work again
* SB!VM:COMPLEX-CHARACTER-STRING-WIDETAG is not bound when #!-sb-unicode
Juho Snellman [Fri, 20 Apr 2007 06:11:43 +0000 (06:11 +0000)]
1.0.4.109: rewrite source that mixed quasiquotes and circular lists
* CLisp didn't like the combination, use a macrolet instead
* Patch by Luis Oliveira
Cyrus Harmon [Fri, 20 Apr 2007 05:19:48 +0000 (05:19 +0000)]
1.0.4.108: turn mach-exception-handler on for macos/x86 and x86_64
* have make-config.sh add mach-exception-handler to the features by
default. This gets around the CrashReporter problems and enables
debugging of SBCL processes with GDB.
NIIMI Satoshi [Thu, 19 Apr 2007 15:48:54 +0000 (15:48 +0000)]
1.0.4.107: fix doc/make-doc.sh if "make" command is not GNU make.
First build problem found by James Knight's BuildBot. :-)
Nikodemus Siivola [Thu, 19 Apr 2007 12:01:04 +0000 (12:01 +0000)]
1.0.4.106: refactoring FILE-POSITION on FD-STREAMS, some cleanups
* Make the underlying FILE-POSITION on FD-STREAMs interrupt-safe.
This is not enough to make FILE-POSITION on FD-STREAMs interrupt
safe, as the ANSI-STREAM layer is not -- or at least I doesn't look
like it to me.
* Split FD-STREAM-FILE-POSITION into two parts for easier reading,
and make the error behaviour more ANSI compliant.
* Move FLUSH-OUTPUT-BUFFER to FINISH-FD-STREAM-OUTPUT to make it a
one-stop-shopping implementation of finish-output for FD-STREAMs.
* New function: FD-STREAM-OUTPUT-FINISHED-P, which returns false if
there is any pending output on the stream.
* Add comments explaining why certain VECTOR-SAP usages are safe
without pinning the vector -- at least on x86oids.
* Instead of (IF #-WIN32 P #+WIN32 T #-WIN32 THEN #+WIN32 ELSE),
let us use #-WIN32 ELSE #+WIN32 (IF P THEN ELSE)...
Juho Snellman [Thu, 19 Apr 2007 06:44:45 +0000 (06:44 +0000)]
1.0.4.105: remove clisp from the list of working build hosts
* It's not like it's actually worked for anyone in ages, but
people keep trying to use it...
Juho Snellman [Thu, 19 Apr 2007 06:32:47 +0000 (06:32 +0000)]
1.0.4.104: don't mutate constant strings in genesis
* CLisp rightfully complains about this when used as a build host
Juho Snellman [Thu, 19 Apr 2007 06:27:46 +0000 (06:27 +0000)]
1.0.4.103: fix build with OpenMCL as the host
* OpenMCL doesn't do the right thing with #+foo #+foo bar bar
* An invalid slot type declaration
Nikodemus Siivola [Wed, 18 Apr 2007 15:26:02 +0000 (15:26 +0000)]
1.0.4.102: SB-SYS and stream cleanups
* Factor out looping on SERVE-ALL-EVENTS to FINISH-FD-STREAM-OUTPUT.
* Make IO-TIMEOUT a subclass of TIMEOUT.
* Remove spurious SB!SYS: prefixes from src/code/stream.lisp and
fd-stream.lisp.
* Delete stale symbols ALLOCATE-SYSTEM-MEMORY-AT, C-PROCEDURE,
POINTER, POINTER>, POINTER<, SERVER, SERVER-MESSAGE, and
WITH-ENABLED-INTERRUPTS from SB-SYS. (Also delete commented out
implementation of W-E-I in target-signal.lisp.)
Nikodemus Siivola [Wed, 18 Apr 2007 10:09:59 +0000 (10:09 +0000)]
1.0.4.101: new STRING-OUTPUT-STREAM implementation
* Instead of copying the output string each time we need to expand
it, maintain a chain of buffers. For large inputs the improvement
is vast, for small inputs the performance characteristics are
essentially the same. One the average seems to cons about 30% less.
Juho Snellman [Wed, 18 Apr 2007 06:00:00 +0000 (06:00 +0000)]
1.0.4.100: gray streams manual fixes
* From Richard Kreuter
Juho Snellman [Wed, 18 Apr 2007 05:20:38 +0000 (05:20 +0000)]
1.0.4.99: fix big-endian build
* Reported by Harald Hanche-Olsen
lisphacker [Tue, 17 Apr 2007 19:16:18 +0000 (19:16 +0000)]
1.0.4.98: Win32 build fix
* Win32 doesn't do sigaltstack, and thus has no SIGSTKSZ.
lisphacker [Tue, 17 Apr 2007 17:19:38 +0000 (17:19 +0000)]
1.0.4.97: Oops. Fix bug introduced in x86 vop if-eq in 1.0.4.73.
Juho Snellman [Tue, 17 Apr 2007 13:28:19 +0000 (13:28 +0000)]
1.0.4.96: oops, missed one case in the HAIRY-DATA-VECTOR-REF changes
* SIMPLE-STRING is a special case in EXTRACT-UPGRADED-ELEMENT-TYPE
Nikodemus Siivola [Tue, 17 Apr 2007 12:34:52 +0000 (12:34 +0000)]
1.0.4.95: small genesis cleanups
* Factor most of the logic to munge lisp-names to C-names into C-NAME
and C-SYMBOL-NAME.
Also translate #\/ to #\_, fixing duplicate definition warnings for
static-symbols.h.
Rudi Schlatte [Tue, 17 Apr 2007 08:39:51 +0000 (08:39 +0000)]
1.0.4.94 make-target-contrib.sh self-announcement
* patch by Yaroslav Kavenchuk
Juho Snellman [Tue, 17 Apr 2007 06:54:10 +0000 (06:54 +0000)]
1.0.4.93: backtrace_from_fp
* Split the ldb x86oid backtrace into two parts (backtrace and
backtrace_from_fp), to make debugging e.g. thread deadlocks
from gdb easier. For example: call backtrace_from_fp($rbp, 10)
Juho Snellman [Tue, 17 Apr 2007 04:19:28 +0000 (04:19 +0000)]
1.0.4.92: faster generic array access
* Replace the typecase-based HAIRY-DATA-VECTOR-* with a table-driven
dispatch on widetags
* Move bounds checking of one-dimension AREFs into HAIRY-DATA-VECTOR-*
from the caller, so that we can avoid doing a full ARRAY-DIMENSION
in the common case.
* 3-5x speedup on generic array accesses
Nikodemus Siivola [Mon, 16 Apr 2007 04:59:02 +0000 (04:59 +0000)]
1.0.4.91: revert 1.0.4.89 test changes
ECHERRYPICK from commit 1.0.4.90.
Nikodemus Siivola [Mon, 16 Apr 2007 04:38:07 +0000 (04:38 +0000)]
1.0.4.90: revert 1.0.4.89 changes to ROOM
* Cleaned up version conses too much.
* Record the bug .89 was supposed to fix.
Nikodemus Siivola [Sat, 14 Apr 2007 16:28:26 +0000 (16:28 +0000)]
1.0.4.89: ROOM cleanups & type-declaration fixes
* Use CODE-INSTRUCTIONS instead of (%PRIMITIVE CODE-INSTRUCTIONS).
* Eliminate TRULY-THE and THE from src/code/room.lisp.
* Byte-counts don't necessarily fit into fixnums, so remove some
of the fixnum declarations (reported by Faré on sbcl-devel.)
* Test-case.
lisphacker [Sat, 14 Apr 2007 15:36:19 +0000 (15:36 +0000)]
1.0.4.88: x86 assembly-routine cleanups
* More uses of make-ea-for-vector-data.
* More uses of make-ea-for-object-slot.
Juho Snellman [Sat, 14 Apr 2007 12:28:15 +0000 (12:28 +0000)]
1.0.4.87: better EQUALP hash function for arrays
* Hashing on just the first 4 elements makes EQUALP tables essentially
useless for many kinds of data due to collisions. Hash all the
elements.
* Optimize a couple of other cases that are probably common
(u-b 8 vectors, fixnum vectors).
* Change EQUALP-HASH to punt to EQ-HASH when appropriate
Nikodemus Siivola [Sat, 14 Apr 2007 11:16:53 +0000 (11:16 +0000)]
1.0.4.86: correct type declaration for SAP+
* The OFFSET argument is a (SIGNED-BYTE #.N-WORD-BITS), not a FIXNUM.
Nikodemus Siivola [Sat, 14 Apr 2007 09:48:40 +0000 (09:48 +0000)]
1.0.4.85: small PCL cleanups and thread-safety notes
* CACHE-NUMBER-VECTOR-REF and WRAPPER-CACHE-NUMBER-VECTOR-REF were
equivalent to LAYOUT-CLOS-HASH. Use only the latter for easier
reading.
* *PREVIOUS-NWRAPPERS* is protected by the PCL lock, so ok.
* The whole of dlisp2.lisp is currently dead code.
Juho Snellman [Sat, 14 Apr 2007 09:27:22 +0000 (09:27 +0000)]
1.0.4.84: better EQUAL hash-tables, revert 0.9.15.21 (non-compliant SXHASH)
* The value of SXHASH on non-string/bitvector arrays should not
change when the contents of the array change (clhs sxhash,
clhs 18.1.2.2). So the commit in 0.9.15.21 is invalid.
* But luckily nothing requires us to use SXHASH for our own
tables. Change the definition of EQUAL-HASH to punt to EQ-HASH
for data types where EQUAL == EQL
Juho Snellman [Fri, 13 Apr 2007 22:37:36 +0000 (22:37 +0000)]
1.0.4.83: fix SXHASH for bignums
* (logAND x (ash x -7)) doesn't give a very good hash...
* Reported by Faré Rideau on #lisp
lisphacker [Fri, 13 Apr 2007 20:40:12 +0000 (20:40 +0000)]
1.0.4.82: more x86 backend cleanups
* optimized callback code slightly (use load-symbol-value (one
instruction) instead of two discrete instructions)
* cleaned up pseudo-atomic by adding an optional width to
make-ea-for-symbol-value.
lisphacker [Fri, 13 Apr 2007 19:23:52 +0000 (19:23 +0000)]
1.0.4.81: more x86 backend cleanups
* make-ea-for-vector-data macro and use where appropriate.
Nikodemus Siivola [Fri, 13 Apr 2007 12:32:14 +0000 (12:32 +0000)]
1.0.4.80: make ADJUST-ARRAY interrupt-safe
* WITHOUT-INTERRUPTS while using the temp-vector that is also bound
to the thread-local *ZAP-ARRAY-DATA-TEMP*, so that interrupt handlers
calling ADJUST-ARRAY cannot stomp on the data.
Also zero out the temp-vector immediately, and be a bit more sensible
about filling it.
* STABLE-SORT has been audited for interrupt-safety vrt. its cached
temporary vector, and is already OK.
* Squeeze a mighty 1050 words out of the core by using empty vectors
for both of the above to start with.
Nikodemus Siivola [Fri, 13 Apr 2007 10:22:30 +0000 (10:22 +0000)]
1.0.4.79: remove lock from *descriptor-handlers*
* Each thread binds it, so no locking required. WITHOUT-INTERRUPTS still
needed, however.
Juho Snellman [Thu, 12 Apr 2007 19:19:05 +0000 (19:19 +0000)]
1.0.4.78: shrink package hash-tables to an optimal size when saving a core
* Also shrink the table if sufficiently many symbols are uninterned
from the package
* Shrinks the core by 800k
* Patch by Lutz Euler on sbcl-devel 2007-04-01
Juho Snellman [Thu, 12 Apr 2007 17:29:30 +0000 (17:29 +0000)]
1.0.4.77: oops, forgot to cvs add a new file in .76
Juho Snellman [Thu, 12 Apr 2007 17:04:04 +0000 (17:04 +0000)]
1.0.4.76: add a new style-warning for duplicate CASE keys
* Patch by Kevin Reid on sbcl-devel
* With minor changes to make the warnings more readable, and to
allow Slime to highlight the offending clauses rather than the
whole CASE.
lisphacker [Thu, 12 Apr 2007 16:44:22 +0000 (16:44 +0000)]
1.0.4.75: Win32 build fix.
* There is no sb!unix:eintr on win32, so serve-event shouldn't use it.
Juho Snellman [Thu, 12 Apr 2007 15:55:07 +0000 (15:55 +0000)]
1.0.4.74: fix &environment issues with macroexpansions in the fopcompiler
* Use real compiler lexenvs in the fopcompiler instead of ad hoc
ones, and pass the environments properly to macroexpand.
* Reported by Samium Gromoff on sbcl-devel.
lisphacker [Thu, 12 Apr 2007 14:55:07 +0000 (14:55 +0000)]
1.0.4.73: more x86 backend cleanups
* Added x86 SB-VM::ENCODE-VALUE-IF-IMMEDIATE to contain a repeated
etypecase in the backend.
lisphacker [Thu, 12 Apr 2007 13:24:33 +0000 (13:24 +0000)]
1.0.4.72: More x86 backend cleanups
* more make-ea-for-FOO.
* more inst mov make-ea FOO => storew.
lisphacker [Thu, 12 Apr 2007 03:24:22 +0000 (03:24 +0000)]
1.0.4.71: x86 backend cleanup
* Make botched calls of make-ea-for-symbol-value amd
make-ea-for-symbol-tls-index cause the build to fail early and
obviously (this would have saved me two hours of debugging).
lisphacker [Thu, 12 Apr 2007 02:28:52 +0000 (02:28 +0000)]
1.0.4.70: more x86 backend cleanups
* Use make-ea-for-FOO macros instead of make-ea with complex
displacement in many places.
Juho Snellman [Thu, 12 Apr 2007 01:55:22 +0000 (01:55 +0000)]
1.0.4.69: fix CL-PPCRE compilation on x86-64
* Broken by the character vop changes in 1.0.4.53
* Patch by Lutz Euler
lisphacker [Wed, 11 Apr 2007 21:19:32 +0000 (21:19 +0000)]
1.0.4.68: Restore x86 non-darwin buildability.
Juho Snellman [Wed, 11 Apr 2007 20:57:13 +0000 (20:57 +0000)]
1.0.4.67: Minor cleanups
* Make PCL aware of SB-EXT:MUFFLE-CONDITIONS declaration. Suppresses
bogus warning when that declaration is used in a method body.
Reported by Kevin Reid on sbcl-devel 2007-04-09.
* Fix a typo in a variable declamation, pointed out by Peter Graves.
* Add some eval-whenage around the DEFCONSTANT for
+SSET-REHASH-THRESHOLD+, since it's used in the same file inside
a #.. This should restore building with clisp to the normal
level of brokenness.
Nathan Froyd [Wed, 11 Apr 2007 20:51:56 +0000 (20:51 +0000)]
1.0.4.66: Undo D-X changes in 1.0.4.63
Nikodemus Siivola [Wed, 11 Apr 2007 18:08:39 +0000 (18:08 +0000)]
1.0.4.65: lock accesses to *descriptor-handlers*
* FD-STREAM functions add and remove handlers, so we need to
serialize the access. Assume this is not usually contended and use
a spinlock. Also restructure the accesses so that we never traverse
the list that may be modified by a recursive serve-event call
caused by an FD handler.
* Delete the stale & commented out object-set stuff, and remove the
corresponding symbols from SB-SYS.
* Move the SUB-SERVE-EVENT stuff that was in macros inline for
easier reading.
* Move WITH-SPINLOCK to host.
Nikodemus Siivola [Wed, 11 Apr 2007 17:05:14 +0000 (17:05 +0000)]
1.0.4.64: more stack-alignment x86/Darwin
* Things work better if we restore the old stack pointer in the
inline version...
* Make sure foreign tests test both fast and small code-paths.
Note: our allocation routines also call out to C, ending up in
alloc(), so they may need looking at too.
Note: out-of-line call_into_c does call + jmp, getting it to
to call + ret should not be too hard, should it?
Nathan Froyd [Wed, 11 Apr 2007 16:35:27 +0000 (16:35 +0000)]
1.0.4.63: Don't zeroize dynamic-extent simple-unboxed-arrays on x86 and x86-64
Nathan Froyd [Wed, 11 Apr 2007 16:20:17 +0000 (16:20 +0000)]
1.0.4.62: Enhance BIGNUM-REPLACE
* Only require one iteration variable if (EQL START1 START2)
Nikodemus Siivola [Wed, 11 Apr 2007 13:59:24 +0000 (13:59 +0000)]
1.0.4.61: stack-alignment on CALL-OUT VOP on x86/Darwin
* As in call_into_c, comment on the OAOOMness.
* Fixes init.test.sh & core.test.sh failures on threaded
Darwin builds.
Nathan Froyd [Wed, 11 Apr 2007 11:37:43 +0000 (11:37 +0000)]
1.0.4.60: More efficient structure raw slot accessors on x86-64
Nikodemus Siivola [Wed, 11 Apr 2007 07:30:57 +0000 (07:30 +0000)]
1.0.4.59: small signal handling improvements
* Grovel SIG_DFL and SIG_IGN.
* Grovel "rare" signals based on the definedness of the signal, not
LISP_FEATURE_FOO.
* Make SIGINT signal an INTERACTIVE-INTERRUPT, which should make
sense on Windows too, if we ever get the ConsoleCtrlHandler
working.
* Make SIGTRAP signal an BREAKPOINT-ERROR, and make SYSTEM-CONDITION
a superclass of both it, INTERACTIVE-INTERRUPT and
MEMORY-FAULT-ERROR.
* Inhibit GC while destroying the thread mutex lutex to avoid races
with the GC.
...and add missing NEWS entries due to your truly.
Cyrus Harmon [Tue, 10 Apr 2007 21:43:44 +0000 (21:43 +0000)]
1.0.4.58: fix lisp object start address calculations in x86-64
* use logandc2 obj sb!vm:lowtag-mask instead of logand obj
#xfffffffffffffff8 (which should have been #xfffffffffffffff0)
to compute obj-start-addr.
Nathan Froyd [Tue, 10 Apr 2007 18:10:31 +0000 (18:10 +0000)]
1.0.4.57: Make the compiler's bit-vector functions use standard CL idioms
* We can do this and still get inline loops because of the
REPLACE/UB*-BASH-COPY/SUBSEQ/COPY-SEQ work committed early;
* ...and, as a nice bonus, make them slightly faster by doing so.
Nathan Froyd [Tue, 10 Apr 2007 16:36:08 +0000 (16:36 +0000)]
1.0.4.56: Make case-insensitive string and character comparisons non-consing
* Create two-arg versions of case-insensitive character comparison
functions;
* Use said functions in the general case;
* Make source transforms for the general functions use the two-arg
functions, thereby avoiding the &REST consing of the general
functions.
Nathan Froyd [Tue, 10 Apr 2007 13:50:43 +0000 (13:50 +0000)]
1.0.4.55: Optimized REPLACE and UB*-BASH-COPY routines
* Expand simple cases of UB*-BASH-COPY inline to avoid full call
overhead and generate better code generally;
* Handle more cases of REPLACE; we now optimize REPLACE on all
simple specialized array types (only element types <= n-word-bits
are handled generally, though);
* Use a single COPY-SEQ and SUBSEQ transform rather than one per
specialized array type; generate inline copies for these too
when possible;
* Tests;
* Backend cleanup: introduce a FIND-SAETP to eliminate duplicate code;
* Backend cleanup: change %{SET-,}VECTOR-RAW-BITS on x86 to use
the *-WITH-OFFSET machinery.
Cyrus Harmon [Tue, 10 Apr 2007 04:18:10 +0000 (04:18 +0000)]
1.0.4.54: x86-64/darwin preliminary threads support
* add sb-lutex to features via make-config.sh
* preserve_pointer context registers in gencgc.c
* use lock/cmpxchg on darwin
* GSYM/GNAME asm hacks
* add -arch options when appropriate for building threads-foreign.so
Nathan Froyd [Tue, 10 Apr 2007 01:20:24 +0000 (01:20 +0000)]
1.0.4.53: Apply Lutz Euler's improved character VOPs patch
Nikodemus Siivola [Mon, 9 Apr 2007 09:48:26 +0000 (09:48 +0000)]
1.0.4.52: fix GET-SPINLOCK, broken by the COMPARE-AND-EXCHANGE patch
* It was behaving as "TRY-SPINLOCK". Oops.
* Our test suite did catch this, but it was being masked by other errors.
Nikodemus Siivola [Sun, 8 Apr 2007 17:34:45 +0000 (17:34 +0000)]
1.0.4.51: no blksize_t on OS X Panther
* Grovel a new feature :os-provides-blksize-t.
Note: as the number of os-provides-foo features increases, it starts
seeming prudent to move them to a separate feature list.
lisphacker [Sun, 8 Apr 2007 15:25:39 +0000 (15:25 +0000)]
1.0.4.50: more x86 backend
* Fixing a missed pair of frame-byte-offsets from 1.0.4.42.
Cyrus Harmon [Sun, 8 Apr 2007 15:16:26 +0000 (15:16 +0000)]
1.0.4.49: revert debugger hackery
* back out my x86-64/macos inspired top-frame workaround. This has
the unfortunate side-effect of re-breaking the debugger on
x86-64/macos, but that needs a proper fix.
Nikodemus Siivola [Sun, 8 Apr 2007 13:20:57 +0000 (13:20 +0000)]
1.0.4.48: ROOM patch by Lutz Euler
* More correct reporting on x86-64.
Nikodemus Siivola [Sun, 8 Apr 2007 13:12:28 +0000 (13:12 +0000)]
1.0.4.47: correct the mess of 1.0.4.46
* Previous was an accidental commit. Sorry.
Nikodemus Siivola [Sun, 8 Apr 2007 12:51:34 +0000 (12:51 +0000)]
1.0.4.46: allow &environment and disallow &aux in DEFSETF lambda-lists
* Reported by Samium Gromoff.
* Test-cases.
Nikodemus Siivola [Sun, 8 Apr 2007 12:38:18 +0000 (12:38 +0000)]
1.0.4.45: workaround for bug #412 & undefined variable cleanup
* When converting dead references to global variables, convert using
SYMBOL-VALUE. Results in the same code, but prevents dead unbound
variable references from being flushed.
* Collect XREF information for constant SYMBOL-VALUE cases.
* Fix one dead reference to *LEXENV* in SBCL codebase.
* Fix other undefined variables in contribs.
* Test-case.
lisphacker [Sun, 8 Apr 2007 05:23:48 +0000 (05:23 +0000)]
1.0.4.44: More x86 disassembler work
* Added a prefix instruction for operand-size-prefix, making MOV
[EDX], AX (for example) disassemble correctly.
* Hacked up map-segment-instructions to work for prefix instructions
again.
lisphacker [Sat, 7 Apr 2007 21:43:04 +0000 (21:43 +0000)]
1.0.4.43: x86 assembler/disassembler tweaks
* Made fs-segment-prefix disassemble as such instead of as byte #x64.
* Added gs-segment-prefix, for symmetry.
lisphacker [Sat, 7 Apr 2007 20:00:24 +0000 (20:00 +0000)]
1.0.2.42: x86 backend cleanups
* Defined frame-byte-offset and frame-word-offset for calculating
offsets within a stack frame.
* Modified most direct references to stack data to use
frame-byte-offset and frame-word-offset instead of an inline
calculation.
Nikodemus Siivola [Sat, 7 Apr 2007 18:27:05 +0000 (18:27 +0000)]
1.0.4.41: unbreak threaded build
* move the newflangled DEFINE-STRUCTURE-SLOT-FOOs later in the
build, so as to have SB!VM:INSTANCE-SLOTS-OFFSET available.
* STRUCTURE-SLOT-INDEX unused -- oops in cherrypicking from a different
tree.
Nikodemus Siivola [Sat, 7 Apr 2007 17:42:05 +0000 (17:42 +0000)]
1.0.4.40: small fixes
* / is not flushable, but unsafely-flushable. Reported by Marco
Monteiro, patch by Kevin Reid. Test-case added to compiler.pure.lisp.
* #include "globals.h" for funcall.c, should unbreak the build for non-x86oids.
* s/(AND (UNSIGNED-BYTE FIXNUM))/(AND UNSIGNED-BYTE FIXNUM)/ in combin.lisp,
discovered by James Anderson.
Nikodemus Siivola [Sat, 7 Apr 2007 13:58:57 +0000 (13:58 +0000)]
1.0.4.39: get rid of hardcoded mutex and spinlock slot indexes
* DEFINE-STRUCTURE-SLOT-COMPARE-AND-EXCHANGE can be used to define
nice wrappers for %INSTANCE-SLOT-CONDITIONAL using just the
structure and slot name.
Note to self: it would probably make sense to give something along
these lines for users to use as well, so that they can implement
lockless algorithms in lisp.
* DEFINE-STRUCTURE-SLOT-ADDRESSOR does the same for getting the
slot address.
* SB-PCL::GET-STRUCTURE-DD moved to host and renamed
SB-KERNEL:FIND-DEFSTRUCT-DESCRIPTION.
* SB-THREAD now uses SB-KERNEL.
(threads.impure.lisp currently fail, but not due to this)
Nikodemus Siivola [Sat, 7 Apr 2007 09:38:47 +0000 (09:38 +0000)]
1.0.4.38: unbreak win32 build, again
* Thanks to Yaroslav Kavenchuk.
Nathan Froyd [Sat, 7 Apr 2007 01:17:36 +0000 (01:17 +0000)]
1.0.4.37: Delete some dead code in pack.lisp
Nathan Froyd [Sat, 7 Apr 2007 01:13:23 +0000 (01:13 +0000)]
1.0.4.36: Commit Kevin Reid's "safer *break-on-signals*" patch.
Nathan Froyd [Sat, 7 Apr 2007 01:07:05 +0000 (01:07 +0000)]
1.0.4.35: Commit Kevin Reid's "Test failure in core.test.sh" patch
Nikodemus Siivola [Fri, 6 Apr 2007 21:48:29 +0000 (21:48 +0000)]
1.0.4.34: return true from GET-SPINLOCK
* unbreak threaded build: since we now depend on the return
value of GET-SPINLOCK in WITH-SPINLOCK, NIL isn't too hot.
...and I could have sworn I made a threaded test build for this...
Cyrus Harmon [Fri, 6 Apr 2007 17:24:26 +0000 (17:24 +0000)]
1.0.4.33: check that context is not a null-alien
* when using the nth-interrupt-context check to make sure that it is
not a null-alien and use the %caller-frame-and-pc if it is.
Nathan Froyd [Fri, 6 Apr 2007 12:55:58 +0000 (12:55 +0000)]
1.0.4.32: De-pessimize >= and <= transforms
Wait until we've computed type information for all the code we've
introduced in this optimization pass before making the transform.
We once again produce decent code for:
(defun foo (x y)
(declare (simple-vector x y))
(do ((i 0 (1+ i))
(end (length x)))
((>= i end) y)
(setf (aref y i) (aref x i))))
Cyrus Harmon [Fri, 6 Apr 2007 11:13:54 +0000 (11:13 +0000)]
1.0.4.31: remove *internal-error-context*
* use nth-interrupt-context to find the context in top-frame instead
of squirreling it away in *internal-error-context*.
* moved the defun for nth-interrupt-context up before top-frame.
* updated NEWS to reflect non-experimental status of x86-64/darwin
port.
Nikodemus Siivola [Fri, 6 Apr 2007 09:58:08 +0000 (09:58 +0000)]
1.0.4.30: make WITH-SPINLOCK-AND-WITHOUT-GCING inhibit interrupts as well
* Previously we could catch an interrupt while GC was inhibited, and
hence any locks the interrupt handler was using could not know if
they were being used with GC enabled or not => GC deadlocks.
* Since this was detected by the runtime warning in WITH-INTERRUPTS
about re-enabling interrupts while GC is inhibited keep it around
in case we have more places this can happen.
* Make MAYBE-HANDLE-PENDING-GC check for pending interrupts as well.
* While we're at it, make WITH-SPINLOCK slightly safer: don't release
locks we didn't obtain, and make us grab the lock inside the UWP.
...not 100% given in the presence of asynch unwinds, but better.
* Also move *INTERRUPTS-ENABLED* and *INTERRUPT-PENDING* to SB-SYS.
* Whitespace in WITHOUT-INTERRUPTS.
NIIMI Satoshi [Thu, 5 Apr 2007 15:56:45 +0000 (15:56 +0000)]
1.0.4.29: Update expected test status on FreeBSD
* (:throw :no-such-tag)
Does not fail.
* (:undefined-function :bug-346)
Fails.
I'll investigate in the future.
Nikodemus Siivola [Thu, 5 Apr 2007 12:24:27 +0000 (12:24 +0000)]
1.0.4.28: optimize GET-INTERNAL-REAL-TIME on Unix.
* Avoid bignum computations, and cache the final result for reuse.
Cyrus Harmon [Thu, 5 Apr 2007 00:42:27 +0000 (00:42 +0000)]
1.0.4.27: more darwin/x86-64 fixes
* use sb!vm:fixnum-tag-mask instead of #b11 to mask off high bits in
debug-int/control-stack-pointer-valid-p
* add special variable sb-kernel::*internal-error-context* to
squirrel away (let) the context so that we can use it in the
debugger to get the frame and pc pointers. rebind this
* top-frame gets frame and pc pointer from squirreled-away context
and set to nil in case we trigger another error in the debugger
* mark (trace :encapsulate nil) and (trace-recursive :encapsulate
nil) tests as failing on x86-64 darwin (FIXME: we should
reinvestigate why these are failing)
* in foreign-stack-alignment.impure.lisp, use -arch x86_64 when
#+(and x86-64 darwin).