sbcl.git
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.

17 years ago1.0.4.49: revert debugger hackery
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.

17 years ago1.0.4.48: ROOM patch by Lutz Euler
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.

17 years ago1.0.4.47: correct the mess of 1.0.4.46
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.

17 years ago1.0.4.46: allow &environment and disallow &aux in DEFSETF lambda-lists
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.

17 years ago1.0.4.45: workaround for bug #412 & undefined variable cleanup
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.

17 years ago1.0.4.44: More x86 disassembler work
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.

17 years ago1.0.4.43: x86 assembler/disassembler tweaks
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.

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

17 years ago1.0.4.41: unbreak threaded build
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.

17 years ago1.0.4.40: small fixes
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.

17 years ago1.0.4.39: get rid of hardcoded mutex and spinlock slot indexes
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)

17 years ago1.0.4.38: unbreak win32 build, again
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.

17 years ago1.0.4.37: Delete some dead code in pack.lisp
Nathan Froyd [Sat, 7 Apr 2007 01:17:36 +0000 (01:17 +0000)]
1.0.4.37: Delete some dead code in pack.lisp

17 years ago1.0.4.36: Commit Kevin Reid's "safer *break-on-signals*" patch.
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.

17 years ago1.0.4.35: Commit Kevin Reid's "Test failure in core.test.sh" 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

17 years ago1.0.4.34: return true from GET-SPINLOCK
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...

17 years ago1.0.4.33: check that context is not a null-alien
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.

17 years ago1.0.4.32: De-pessimize >= and <= transforms
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))))

17 years ago1.0.4.31: remove *internal-error-context*
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.

17 years ago1.0.4.30: make WITH-SPINLOCK-AND-WITHOUT-GCING inhibit interrupts as well
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.

17 years ago1.0.4.29: Update expected test status on FreeBSD
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.

17 years ago1.0.4.28: optimize GET-INTERNAL-REAL-TIME on Unix.
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.

17 years ago1.0.4.27: more darwin/x86-64 fixes
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).

17 years ago1.0.4.26: fix wrapped stat struct for darwin
Cyrus Harmon [Thu, 5 Apr 2007 00:33:21 +0000 (00:33 +0000)]
1.0.4.26: fix wrapped stat struct for darwin
 * st-size should be on off-t on darwin, instead of unsigned-int and
   st-blksize should be an unsigned-int instead of an unsigned-long
 * use dev_t and off_t on darwin to figure out the size of st_rdev and
   st_size
 * add ffi_blksize_t for wrapped_st_blksize

17 years ago1.0.4.25: 16 byte align asm functions
Cyrus Harmon [Thu, 5 Apr 2007 00:24:29 +0000 (00:24 +0000)]
1.0.4.25: 16 byte align asm functions
 * we probably don't need to do this but, for consistency's sake
   anyway, 16-byte align the alloc asm functions.

17 years ago1.0.4.24: documentation spelling fixes
Cyrus Harmon [Thu, 5 Apr 2007 00:21:27 +0000 (00:21 +0000)]
1.0.4.24: documentation spelling fixes
 * invokation -> invocation (thanks to Dan Barlwo for pointing this
   out).

17 years ago1.0.4.23: sb-grovel x86-64/darwin fix
Cyrus Harmon [Wed, 4 Apr 2007 23:52:11 +0000 (23:52 +0000)]
1.0.4.23: sb-grovel x86-64/darwin fix
 * sb-grovel was compiling the C file in 32-bit mode (the default) on
   darwin even when being run from in x86-64 mode. add "-arch"
   "x86_64" to args to CC.
 * remove darwin sepecific version of the stat structure. Turns out
   the original stat struct was really ok but that we were getting
   thrown off by the wrong types coming back from sb-grovel.

17 years ago1.0.4.22: trivial cleanup
Nikodemus Siivola [Wed, 4 Apr 2007 14:02:27 +0000 (14:02 +0000)]
1.0.4.22: trivial cleanup
  * Deleted empty #ifdef leg.

17 years ago1.0.4.21: merge redundant funcallN definitions in the runtime
Nikodemus Siivola [Wed, 4 Apr 2007 13:11:15 +0000 (13:11 +0000)]
1.0.4.21: merge redundant funcallN definitions in the runtime
 * We need only two implementations, not one per arch: put them into
   a new file "funcall.c".

17 years ago1.0.4.20: Win32 build fix
lisphacker [Tue, 3 Apr 2007 15:54:48 +0000 (15:54 +0000)]
1.0.4.20: Win32 build fix

  * interrupt_handle_pending turned out to be required on win32.

  * whitespace damage.

17 years ago1.0.4.19: oops, broken win32 build
Nikodemus Siivola [Mon, 2 Apr 2007 17:28:12 +0000 (17:28 +0000)]
1.0.4.19: oops, broken win32 build
 ...add missing declaration

17 years ago1.0.4.18: trap handling cleanup continues
Nikodemus Siivola [Mon, 2 Apr 2007 15:20:39 +0000 (15:20 +0000)]
1.0.4.18: trap handling cleanup continues

 * handle_trap is even better then maybe_handle_trap: if we can't
   handle the trap sanely pass the buck to unhandled_trap_error
   instead of generic signal handling routines.

 * implement Windows trap handling on top of handle_trap, not
   sigtrap_handler: some copy-paste from x86-arch.c later Windows is
   now almost free of the "signal handling" remnants.

 * Replace the bogus lossage messages saying
   "fake_foreign_function_call fell through" with things that actually
   make sense.

17 years ago1.0.4.17: interrupt handler spring cleaning
Nikodemus Siivola [Mon, 2 Apr 2007 13:40:48 +0000 (13:40 +0000)]
1.0.4.17: interrupt handler spring cleaning

 * interrupt_handle_now was always called with the real context, not
   a void context: remove the useless cast. Also fix
   FOREIGN_FUNCTION_CALL_FLAG usage there.

 * low_level_interrupt_handle_now was also always called with the real
   context, not a void context: useless cast is now gone. It also
   needs no FP control restoration or Darwin context fixage.

 * maybe_now_maybe_later and low_level_maybe_now_maybe_later were
   missing the Darwin context fix on one codepath.

 * interrupt_handle_now_handler was missing the FP control fixage.

17 years ago1.0.4.16: some GC and interrupt refactoring
Nikodemus Siivola [Mon, 2 Apr 2007 08:37:36 +0000 (08:37 +0000)]
1.0.4.16: some GC and interrupt refactoring

 * Conditionalize foreign_function_call_active on
   FOREIGN_FUNCTION_CALL_FLAG for clarity, and excice it from x86
   assember code.

 * Rename interrupt_maybe_gc to cheyneygc_handle_wp_violation, and
   move it cheyneygc.c. Don't pretend it is a signal handler, but pass
   in just the context and faulting address it needs.

 * Make gc_trigger_hit to accept the faulting address directly, since
   we already have it handy, and move it to cheneygc.c.

 * Rename interrupt_maybe_gc_int to maybe_gc, and move it to
   gc-common.c. Don't pretend it is a signal handler, but pass in just
   the context it needs.

 * maybe_gc_pending unused, deleted.

 * Only a single bytes_consed_between_gcs declaration, in gc.h.

 * Whitespace.

 No significant functional changes. Tested on x86/GENCGC, PPC/GENCGC,
 and PPC/Cheney.

 ...did you know that stepping is broken on PPC/Cheney but not on
 PPC/GENCGC?

17 years ago1.0.4.15:
Thiemo Seufer [Sun, 1 Apr 2007 19:49:25 +0000 (19:49 +0000)]
1.0.4.15:
Add missing void parameters.

17 years ago1.0.4.14: oops! duplicate definition of print_unknown
Nikodemus Siivola [Sun, 1 Apr 2007 19:40:00 +0000 (19:40 +0000)]
1.0.4.14: oops! duplicate definition of print_unknown
 * ECHERRYPICK.

17 years ago1.0.4.13: refactor trap handling
Nikodemus Siivola [Sun, 1 Apr 2007 19:36:16 +0000 (19:36 +0000)]
1.0.4.13: refactor trap handling

 * All architectures had an essentially identical switch(trap){...}
   for different trap codes. Pull this into a single shared
   handle_trap function, which dispatches to architecture specific
   functions where necessary.

 * Remove unnecessary signal and siginfo arguments from breakpoint
   handling functions and interrupt_internal_error as a tentative step
   towards admitting that POSIX is not the only world out there.

 * Clean up some compiler warnings from the runtime, and a missing
   anti-copyright header.

 * Fix the PPC build... at least on G4 Darwin 10.3: no suseconds_t
   here.

 Tested on x86, x86-64, and PPC. Sparc, MIPS (and Alpha) testing
 needed.

17 years ago1.0.4.12: stale bugs
Nikodemus Siivola [Sat, 31 Mar 2007 10:51:20 +0000 (10:51 +0000)]
1.0.4.12: stale bugs
 * bug 27 has not been observed in ages, and our interrupt handling has
   changed sufficiently since to consider the case closed.
 * bug 78 has ...evolved.
 * bug 256.b has been fixed (test added now.)
 * bug 381 was fixed a while back by MAYBE-CYCLIC-P.

17 years ago1.0.4.11: trivial hash-table cleanup / optimization
Nikodemus Siivola [Sat, 31 Mar 2007 10:12:15 +0000 (10:12 +0000)]
1.0.4.11: trivial hash-table cleanup / optimization

 * Hash table code does lots of AREFs using indexes (* 2 i) and (1+ (* 2 i)),
   where I obviously has to be less then (floor array-dimension-limit 2),
   for which both calculations are known to fit into a fixnum.

 * Define such a type (aka INDEX/2) and use it where appropriate. We
   were already doing this in WITH-HASH-TABLE-ITERATOR, but not
   elsewhere.

17 years ago1.0.4.10: conditionalize bignum-character line writing test
Nikodemus Siivola [Thu, 29 Mar 2007 18:33:34 +0000 (18:33 +0000)]
1.0.4.10: conditionalize bignum-character line writing test
 * Takes too long on 64 bit platforms!

17 years ago1.0.4.9: writing bignum characters onto a single line
Nikodemus Siivola [Thu, 29 Mar 2007 18:08:47 +0000 (18:08 +0000)]
1.0.4.9: writing bignum characters onto a single line
 * FD-STREAM-CHAR-POS can run into bignums. It might be prudent to
   stop incrementing it for stupendously long lines, but this will
   do for now.