sbcl.git
17 years ago1.0.5.37: cleanup a small thinko from previous x86-assem.S refactoring
Nikodemus Siivola [Sun, 6 May 2007 21:21:42 +0000 (21:21 +0000)]
1.0.5.37: cleanup a small thinko from previous x86-assem.S refactoring

 * EBP is available to use in ALLOC, so use it.

17 years ago1.0.5.36: x86 allocation cleanup
Nikodemus Siivola [Sun, 6 May 2007 20:50:10 +0000 (20:50 +0000)]
1.0.5.36: x86 allocation cleanup

 * Ensure stack alignmenment on calls to alloc() on Darwin.

 * Ensure that DF is cleared on calls to alloc().

 * Preprocessorize the alloc_foo definitions.

17 years ago1.0.5.35: stack alignment on x86/Darwin, once more
Nikodemus Siivola [Sun, 6 May 2007 17:56:27 +0000 (17:56 +0000)]
1.0.5.35: stack alignment on x86/Darwin, once more

 * Stack alignment cannot be changed after arguments have been pushed
   on stack: ALLOCATE-NUMBER-STACK-SPACE is the place to do this, and
   nowhere else.

 * Use the RESET-STACK-POINTER logic on all x86 platforms for
   simplicity.

 * Factor out the alignment logic to ALIGN-STACK-POINTER.

 * Clear DF unconditionally when calling out, which means that Solaris
   doesn't need to switch it back and forth. (Darwin, Solaris, and Win32
   all need DF cleared for call-out.)

17 years ago1.0.5.34: faster STRING-TO-OCTETS for unibyte and UTF-8 encodings
Nathan Froyd [Sun, 6 May 2007 02:28:42 +0000 (02:28 +0000)]
1.0.5.34: faster STRING-TO-OCTETS for unibyte and UTF-8 encodings

* redo DEFINE-UNIBYTE-MAPPER to use a lookup table instead of
  a big CASE statement (optimizes for the common (?) case of
  mostly ASCII characters and gives smaller code);
* STRING->LATIN% now optimistically assumes that there are
  no encoding errors in the string and allocates an
  appropriately-sized octet vector upfront, falling back to
  the slower path if an encoding error is detected;
* do more or less the same thing for UTF-8 encoding, except
  that there is no slow path (since UTF-8 can encode all
  characters, unlike unibyte encodings)
* we have a ton of external formats; use a hash table for
  *EXTERNAL-FORMAT-FUNCTIONS* rather than a list to cut down
  on lookup time (this alone is worth ~10% without the other
  optimizations above...).

Code cleanups:

* use string package names like every other source file;
* properly separate function names from arglists;
* don't pass END parameters when we don't use them.

End result is ~20-30x speedup for unibyte encodings (depending
        on the encoding--LATIN-1 is ~20x, whereas something like CP857
        is ~30x) when encoding ASCII strings; smaller but still
        significant speedups when encoding non-ASCII strings.  UTF-8
        encoding is ~5-6x faster, which also means that we're faster
        than TRIVIAL-UTF-8 for encoding now (decoding is an entirely
        different matter).

17 years ago1.0.5.33: fix botched commit 1.0.5.32: partial fix for DISASSEMBLE buglet
Nikodemus Siivola [Sat, 5 May 2007 10:36:00 +0000 (10:36 +0000)]
1.0.5.33: fix botched commit 1.0.5.32: partial fix for DISASSEMBLE buglet

  * Test for >= length, not > length.

  * Record the remaining WARNING in BUGS.

17 years ago1.0.5.32: partial fix for DISASSEMBLE bug reported by Peter Graves
Nikodemus Siivola [Sat, 5 May 2007 10:31:06 +0000 (10:31 +0000)]
1.0.5.32: partial fix for DISASSEMBLE bug reported by Peter Graves

  * Test for >= length, not > length.

  * Record the remaining WARNING in BUGS.

17 years ago1.0.5.31: Make sb-introspect's FUNCTION-ARGLIST safer
Christophe Rhodes [Fri, 4 May 2007 11:49:21 +0000 (11:49 +0000)]
1.0.5.31: Make sb-introspect's FUNCTION-ARGLIST safer
... less likely to read off some random word in memory
as an arglist.

17 years ago1.0.5.30: small PCL re-organization
Nikodemus Siivola [Fri, 4 May 2007 10:06:31 +0000 (10:06 +0000)]
1.0.5.30: small PCL re-organization
 * Move some non-cache code from src/pcl/cache.lisp to wrapper.lisp and
   dlisp.lisp.

 No functional changes.

17 years ago1.0.5.29: fix a race-condition in deadline.impure.lisp
Nikodemus Siivola [Fri, 4 May 2007 09:21:40 +0000 (09:21 +0000)]
1.0.5.29: fix a race-condition in deadline.impure.lisp
 * The thread that is supposed to hold the mutex might no yet have
   grabbed it.

17 years ago1.0.5.28: new contrib: sb-cover, a code coverage tool
Juho Snellman [Thu, 3 May 2007 03:27:55 +0000 (03:27 +0000)]
1.0.5.28: new contrib: sb-cover, a code coverage tool

         Still somewhat experimental, so it might be changed incompatibly once
         people start actually using it. Or maybe even removed, if it's not
         found to be useful in practice. More documentation on interpreting
         the output and on the limitations of the coverage tool will be
         committed later.

         * Compiler
           * Instrument all forms found in the original source code
             when the store-coverage-data optimization quality is larger
             than 1.
           * The instrumentation is fairly lightweight; just literal conses that
             are modified when the form is executed.
           * This requires hacking the compiler to allow modifying literals
             when we know what we're doing.
           * Add some extra source location tracking capabilities to handle
             non-cons source forms better (though still not perfectly).
         * Contrib
           * Get the instrumentation data from the compiler, and create
             a aggregate report + pretty annotate source code reports
             (as html) from it.
           * The latter uses a modified version of the source code tracking
             read-table from Swank, written by Helmut Eller.

17 years ago1.0.5.27: Stepper support for MIPS.
Thiemo Seufer [Wed, 2 May 2007 23:04:37 +0000 (23:04 +0000)]
1.0.5.27: Stepper support for MIPS.

17 years ago1.0.5.26: Whitespacing.
Thiemo Seufer [Wed, 2 May 2007 22:57:33 +0000 (22:57 +0000)]
1.0.5.26: Whitespacing.

17 years ago1.0.5.25:
Thiemo Seufer [Wed, 2 May 2007 17:46:03 +0000 (17:46 +0000)]
1.0.5.25:
Fix argument signedness format.

17 years ago1.0.5.24:
Thiemo Seufer [Wed, 2 May 2007 17:42:33 +0000 (17:42 +0000)]
1.0.5.24:
Silence compiler warning.

17 years ago1.0.5.23:
Thiemo Seufer [Wed, 2 May 2007 17:39:31 +0000 (17:39 +0000)]
1.0.5.23:
Fix spelling.

17 years ago1.0.5.22:
Thiemo Seufer [Wed, 2 May 2007 17:37:54 +0000 (17:37 +0000)]
1.0.5.22:
Delete obsolete depends: dummy target.

17 years ago1.0.5.21:
Thiemo Seufer [Wed, 2 May 2007 17:35:31 +0000 (17:35 +0000)]
1.0.5.21:
Code formatting.

17 years ago1.0.5.20: make class-eq specializers work in defmethods
Christophe Rhodes [Wed, 2 May 2007 15:35:15 +0000 (15:35 +0000)]
1.0.5.20: make class-eq specializers work in defmethods
Mostly for consistency: this is not an exported extension or
anything.  But it was gratuitously broken before, and it was
also broken in ways preventing user-defined specializers from
working.  So fix it and test it, with a comment saying that it's
OK to break it deliberately.

(User-defined specializers do not currently work, even after
this change.)

17 years ago1.0.5.19: restore building on cmucl 19a-ish
Christophe Rhodes [Wed, 2 May 2007 15:27:56 +0000 (15:27 +0000)]
1.0.5.19: restore building on cmucl 19a-ish
... sb!xc:macroexpand in code seen by the host compiler.  (Said
code was never executed by the host compiler, because of
the return value of fopcompileable-p)

17 years ago1.0.5.18: trapping-based stepper on the Sparc
Christophe Rhodes [Wed, 2 May 2007 13:07:18 +0000 (13:07 +0000)]
1.0.5.18: trapping-based stepper on the Sparc
... implement instrumentation for :before and :around cases;
... as suggested by Juho, use NTH-INTERRUPT-CONTEXT rather than
allocating a SAP in a signal handler;
... actually run the tests on sparc too.

17 years ago1.0.5.17: Top-level DECLARE signals an error
Christophe Rhodes [Wed, 2 May 2007 10:02:08 +0000 (10:02 +0000)]
1.0.5.17: Top-level DECLARE signals an error
... probably the user meant a top-level DECLAIM, but in the
absence of proof an error is a decent choice for undefined
behaviour.

17 years ago1.0.5.16: Follow the change of linux-os.c:futex_wait().
NIIMI Satoshi [Tue, 1 May 2007 05:20:19 +0000 (05:20 +0000)]
1.0.5.16: Follow the change of linux-os.c:futex_wait().

17 years ago1.0.5.15: fix SB-BSD-SOCKETS tests on chrooted NetBSD
Juho Snellman [Mon, 30 Apr 2007 21:01:42 +0000 (21:01 +0000)]
1.0.5.15: fix SB-BSD-SOCKETS tests on chrooted NetBSD

         * Handle dangling /dev/log symlink
         * Patch by Richard Kreuter

17 years ago1.0.5.14: make PURIFY a no-op on gencgc
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.

17 years ago1.0.5.13: better wordbreaks in manual
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.

17 years ago1.0.5.12: fix threaded Linux builds
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.

17 years ago1.0.5.11: fix non-threaded build
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.

17 years ago1.0.5.10: interrupt-proofing SUB-GC
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.

17 years ago1.0.5.9: experimental semi-synchronous deadlines
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.

17 years ago1.0.5.8: always display package prefixes when symbols conflict
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.

17 years ago1.0.5.7: missing test case for 1.0.4.40
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.

17 years ago1.0.5.6: compare-and-swap / instance-set-conditional refactoring
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.

17 years ago1.0.5.5: &ENVIRONMENT fixes
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.

17 years ago1.0.5.4: signal handler consing causing GCs
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.

17 years ago1.0.5.3: compiling a SUBSEQ on a SIMPLE-VECTOR should not give notes
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.

17 years ago1.0.5.2: non-racy WITH-SPINLOCK-AND-WITHOUT-GCING
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.

17 years ago1.0.5.1: remove ldso-stubs.S in clean.sh
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)

17 years ago1.0.5:
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

17 years ago1.0.4.111: NEWS editing
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.

17 years ago1.0.4.110: make -sb-unicode builds work again
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

17 years ago1.0.4.109: rewrite source that mixed quasiquotes and circular lists
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

17 years ago1.0.4.108: turn mach-exception-handler on for macos/x86 and x86_64
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.

17 years ago1.0.4.107: fix doc/make-doc.sh if "make" command is not GNU make.
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. :-)

17 years ago1.0.4.106: refactoring FILE-POSITION on FD-STREAMS, some cleanups
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)...

17 years ago1.0.4.105: remove clisp from the list of working build hosts
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...

17 years ago1.0.4.104: don't mutate constant strings in genesis
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

17 years ago1.0.4.103: fix build with OpenMCL as the 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

17 years ago1.0.4.102: SB-SYS and stream cleanups
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.)

17 years ago1.0.4.101: new STRING-OUTPUT-STREAM implementation
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.

17 years ago1.0.4.100: gray streams manual fixes
Juho Snellman [Wed, 18 Apr 2007 06:00:00 +0000 (06:00 +0000)]
1.0.4.100: gray streams manual fixes

         * From Richard Kreuter

17 years ago1.0.4.99: fix big-endian build
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

17 years ago1.0.4.98: Win32 build fix
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.

17 years ago1.0.4.97: Oops. Fix bug introduced in x86 vop if-eq in 1.0.4.73.
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.

17 years ago1.0.4.96: oops, missed one case in the HAIRY-DATA-VECTOR-REF changes
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

17 years ago1.0.4.95: small genesis cleanups
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.

17 years ago1.0.4.94 make-target-contrib.sh self-announcement
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

17 years ago1.0.4.93: backtrace_from_fp
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)

17 years ago1.0.4.92: faster generic array access
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

17 years ago1.0.4.91: revert 1.0.4.89 test changes
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.

17 years ago1.0.4.90: revert 1.0.4.89 changes to ROOM
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.

17 years ago1.0.4.89: ROOM cleanups & type-declaration fixes
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.

17 years ago1.0.4.88: x86 assembly-routine cleanups
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.

17 years ago1.0.4.87: better EQUALP hash function for arrays
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

17 years ago1.0.4.86: correct type declaration for SAP+
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.

17 years ago1.0.4.85: small PCL cleanups and thread-safety notes
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.

17 years ago1.0.4.84: better EQUAL hash-tables, revert 0.9.15.21 (non-compliant SXHASH)
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

17 years ago1.0.4.83: fix SXHASH for bignums
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

17 years ago1.0.4.82: more x86 backend cleanups
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.

17 years ago1.0.4.81: more x86 backend cleanups
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.

17 years ago1.0.4.80: make ADJUST-ARRAY interrupt-safe
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.

17 years ago1.0.4.79: remove lock from *descriptor-handlers*
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.

17 years ago1.0.4.78: shrink package hash-tables to an optimal size when saving a core
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

17 years ago1.0.4.77: oops, forgot to cvs add a new file in .76
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

17 years ago1.0.4.76: add a new style-warning for duplicate CASE keys
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.

17 years ago1.0.4.75: Win32 build fix.
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.

17 years ago1.0.4.74: fix &environment issues with macroexpansions in the fopcompiler
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.

17 years ago1.0.4.73: more x86 backend cleanups
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.

17 years ago1.0.4.72: More x86 backend cleanups
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.

17 years ago1.0.4.71: x86 backend cleanup
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).

17 years ago1.0.4.70: more x86 backend cleanups
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.

17 years ago1.0.4.69: fix CL-PPCRE compilation on x86-64
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

17 years ago1.0.4.68: Restore x86 non-darwin buildability.
lisphacker [Wed, 11 Apr 2007 21:19:32 +0000 (21:19 +0000)]
1.0.4.68: Restore x86 non-darwin buildability.

17 years ago1.0.4.67: Minor cleanups
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.

17 years ago1.0.4.66: Undo D-X changes in 1.0.4.63
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

17 years ago1.0.4.65: lock accesses to *descriptor-handlers*
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.

17 years ago1.0.4.64: more stack-alignment x86/Darwin
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?

17 years ago1.0.4.63: Don't zeroize dynamic-extent simple-unboxed-arrays on x86 and x86-64
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

17 years ago1.0.4.62: Enhance BIGNUM-REPLACE
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)

17 years ago1.0.4.61: stack-alignment on CALL-OUT VOP on x86/Darwin
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.

17 years ago1.0.4.60: More efficient structure raw slot accessors on x86-64
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

17 years ago1.0.4.59: small signal handling improvements
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.

17 years ago1.0.4.58: fix lisp object start address calculations in x86-64
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.

17 years ago1.0.4.57: Make the compiler's bit-vector functions use standard CL idioms
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.

17 years ago1.0.4.56: Make case-insensitive string and character comparisons non-consing
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.

17 years ago1.0.4.55: Optimized REPLACE and UB*-BASH-COPY routines
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.

17 years ago1.0.4.54: x86-64/darwin preliminary threads support
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

17 years ago1.0.4.53: Apply Lutz Euler's improved character VOPs patch
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

17 years ago1.0.4.52: fix GET-SPINLOCK, broken by the COMPARE-AND-EXCHANGE 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.

17 years ago1.0.4.51: no blksize_t on OS X Panther
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.

17 years ago1.0.4.50: more x86 backend
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.