sbcl.git
16 years ago1.0.17.24: refactor handling of constants in the compiler
Nikodemus Siivola [Wed, 4 Jun 2008 12:39:38 +0000 (12:39 +0000)]
1.0.17.24: refactor handling of constants in the compiler

 * Coalesce non-circular lists, bit-vectors, and non-base-strings in the
   file-compiler. (We could do more, but these are the "easy" ones.) Takes
   care of OPTIMIZATIONS #34 in practice: outside the file compiler one can
   still trick the system into similar behaviour, but that seems a fairly
   academic concern.

 * Never go through SYMBOL-VALUE at runtime to fetch the value of a constant
   variable in compiled code.

 * Use (SYMBOL-VALUE <NAME>) as the load-form to dump references to named
   constants into fasls.

 * Signal a continuable error if an attempt to change the SYMBOL-VALUE of a
   constant variable is made.

 * Assignments to undefined variables go through SET, so that one
   cannot accidentally modify a constant by doing something like:

    (defun set-foo (x) (setq foo x))
    (defconstant foo 42)
    (set-foo 13)

 * Gets rid of INFO :VARIABLE :CONSTANT-VALUE, and just uses SYMBOL-VALUE to
   store constant values.

 * Move definition of SB!XC:LAMBDA-LIST-KEYWORDS to be beginning of the build,
   and use it instead of the host LAMBDA-LIST-KEYWORDS where appropriate.

 * Tests.

16 years ago1.0.17.23: respect displacement indices when trimming strings (regression 1.0.12.23)
Nikodemus Siivola [Tue, 3 Jun 2008 16:00:15 +0000 (16:00 +0000)]
1.0.17.23: respect displacement indices when trimming strings (regression 1.0.12.23)

 * Revealed by ansi-tests.

16 years ago1.0.17.22: respect fill-pointers when trimming strings (regression 1.0.12.23)
Nikodemus Siivola [Tue, 3 Jun 2008 15:27:21 +0000 (15:27 +0000)]
1.0.17.22: respect fill-pointers when trimming strings (regression 1.0.12.23)

 * Revealed by ansi-tests.

16 years ago1.0.17.21: LIST-FILL* return value (regression 1.0.12.16)
Nikodemus Siivola [Tue, 3 Jun 2008 15:07:03 +0000 (15:07 +0000)]
1.0.17.21: LIST-FILL* return value (regression 1.0.12.16)

 * Revealed by ansi-tests.

16 years ago1.0.17.20: NIL is a legal function name (regression 1.0.13.38)
Nikodemus Siivola [Tue, 3 Jun 2008 15:01:45 +0000 (15:01 +0000)]
1.0.17.20: NIL is a legal function name (regression 1.0.13.38)

 * Revealed by ansi-tests.

16 years ago1.0.17.19: fix interpreted structure constructors (regression since 1.0.17.4)
Nikodemus Siivola [Mon, 2 Jun 2008 15:19:15 +0000 (15:19 +0000)]
1.0.17.19: fix interpreted structure constructors (regression since 1.0.17.4)

 * Add full definition for %MAKE-STRUCTURE-INSTANCE.

 * Test-case.

16 years ago1.0.17.18: handlers with non-required arguments (regression 1.0.17.8)
Nikodemus Siivola [Mon, 2 Jun 2008 13:31:39 +0000 (13:31 +0000)]
1.0.17.18: handlers with non-required arguments (regression 1.0.17.8)

 * DX-FLET doesn't currently handle non-required arguments, so don't
   use it when there are any.

 * Test-case.

16 years ago1.0.17.17: Add a conservative GC workaround to string-output-streams
Juho Snellman [Mon, 2 Jun 2008 03:17:15 +0000 (03:17 +0000)]
1.0.17.17: Add a conservative GC workaround to string-output-streams

        * Fill the lists of buffer pointers with NIL after producing
          the string. This reduces the likelyhood of the conservative
          GC hanging on to all of the buffers at once.

16 years ago1.0.17.16: Stop using EAI_NODATA
Juho Snellman [Mon, 2 Jun 2008 03:07:57 +0000 (03:07 +0000)]
1.0.17.16: Stop using EAI_NODATA

        * EAI_NODATA is deprecated since RFC 3493, and has now been
          removed from glibc headers. Stop using it in sb-bsd-sockets.
          Fixes Fedora Core 9 build.

16 years ago1.0.17.15: Clean up after sb-cover tests
Juho Snellman [Mon, 2 Jun 2008 02:03:59 +0000 (02:03 +0000)]
1.0.17.15: Clean up after sb-cover tests

        * No point in having the install scripts install the html files
          produced while running tests. This was causing problems for
          some Linux distributions that require all installed files to have
          completely predictable names, whereas the test output files
          would have names that depended on the exact build directory name.

16 years ago1.0.17.14: slightly better LIST*
Nikodemus Siivola [Sat, 31 May 2008 17:43:12 +0000 (17:43 +0000)]
1.0.17.14: slightly better LIST*

 * Disable type-checks in full calls to LIST*, because we know the &REST
   list is a proper list.

 * Handle 1 argument case in the source-transform.

 * Add a derive-type optimizer, so we can figure out the common case
   when the return value is know to be a CONS.

16 years ago1.0.17.13: grab-bag of SB-SPROF enhancements
Nikodemus Siivola [Fri, 30 May 2008 18:26:10 +0000 (18:26 +0000)]
1.0.17.13: grab-bag of SB-SPROF enhancements

 * Added support for wallclock profiling. (Good for noticing waits
   that do not incur run time penalties.)

 * Added keyword arguments :SORT-ORDER (:ASCENDING or :DESCENDING) and
   :SORT-BY (:SAMPLES or :CUMULATIVE-SAMPLES) to REPORT, defaulting to
   :DESCENDING and :SAMPLES as before. Makes eyeballing flat reports
   easier, since often cumulative samples are the ones one should pay
   attention to (esp. for :CPU and :TIME profiling.)

 * Added support for profiling specific threads. New default is to
   profile only the current thread when using WITH-PROFILING, and all
   threads when using START-PROFILING -- :THREADS argument to both
   WITH-PROFILING and START-PROFILING can be used to specify other
   either a specific list of threads to profile, or :ALL to profile
   all threads. (In the future we might want to add eg. :CHILDREN to
   WITH-PROFILING, etc.)

   ** For :CPU profiling the signal handler simply filters out the
      threads we are not profiling.

   ** For :ALLOC profiling, *ALLOC-SIGNAL* is now thread local, and
      the profiler frobs the global *DEFAULT-ALLOC-SIGNAL* and local
      *ALLOC-SIGNAL*s as needed. Before the runtime delivers the
      allocation SIGPROF, it sets *ALLOC-SIGNAL* to T to prevent
      problems with recursive allocation signals (seem better then
      binding it in the handler, since we cannot really bind it quite
      early enough no matter what we do.)

   ** For :TIME profiling, we set up a timer that uses SIGPROF and
      pthread_kill to notify threads.

 * Use system locking macros instead of separate WITHOUT-GCING and
   WITHOUT-INTERRUPTS for cleanliness.

 * Make REPORT report the correct sample/alloction interval, and list
   the threads sampled.

16 years ago1.0.17.12: win32 build fix
Nikodemus Siivola [Fri, 30 May 2008 18:02:32 +0000 (18:02 +0000)]
1.0.17.12: win32 build fix

 * ...no signals on win32. Hopefully it now works.

16 years ago1.0.17.11: unithread build fix
Nikodemus Siivola [Fri, 30 May 2008 17:56:19 +0000 (17:56 +0000)]
1.0.17.11: unithread build fix

 * Use thread_sigmask, not pthread_sigmask.

16 years ago1.0.17.10: correct stack alignment for alloc() calls on Darwin/x86
Nikodemus Siivola [Fri, 30 May 2008 17:29:27 +0000 (17:29 +0000)]
1.0.17.10: correct stack alignment for alloc() calls on Darwin/x86

 * 16 bytes at the point of call, not 16 bytes at some random-point-
   then-push-two-words.

16 years ago1.0.17.9: grab-bag of PCL hackery
Nikodemus Siivola [Fri, 30 May 2008 13:16:24 +0000 (13:16 +0000)]
1.0.17.9: grab-bag of PCL hackery

 * Make REAL-ADD-METHOD suck slightly less: instead of paying for
   generic dispatch for all METHOD-FOO accessors, use a single call
   to a method that gets the benefit of permutation vectors and
   returns all we want as multiple values.

   ...this assumes that users are not allowed to override METHOD-FOO
   accessors. My current reading of AMOP is that overriding them is
   not specified at all -- but if someone needs it, we can use
   CLASS-EQ specializer magic to make that work.

 * A smattering of :TEST #'EQs for PUSHNEW, MEMBER, and ADJOIN.

 * Global specializer tables need to be synchronized now that our
   hash-tables aren't thread safe by default anymore.

16 years ago1.0.17.8: use dynamic-extent in HANDLER-CASE and HANDLER-BIND
Nikodemus Siivola [Fri, 30 May 2008 11:32:13 +0000 (11:32 +0000)]
1.0.17.8: use dynamic-extent in HANDLER-CASE and HANDLER-BIND

 * Hairier then I would have liked due to need not to leak the stack
   allocation policy to user code. See my email to sbcl-devel: "Future
   of sb-c:stack-allocate-dynamic-extent" for related discussion.

 * Also eliminate one redundant FLOAT-WAIT by splitting HANDLER-BIND
   into two parts, and using the more primitive one -- one that doesn't
   inject FLOAT-WAIT on its -- to implement HANDLER-CASE.

16 years ago1.0.17.7: smaller and faster raw slot initialization on x86oids
Nikodemus Siivola [Thu, 29 May 2008 16:11:09 +0000 (16:11 +0000)]
1.0.17.7: smaller and faster raw slot initialization on x86oids

 * Since %MAKE-STRUCTURE-INSTANCE knows exactly how long the instance
   will be, RAW-INSTANCE-INIT/* VOPs don't need to fetch the length at
   all, but can receive it as a direct argument.

 * Use (* INDEX N-WORD-BYTES) in MAKE-EA-FOR-RAW-SLOT instead of
   (FIXNUMIZE INDEX) -- same result, but the intention becomes clear.

16 years ago1.0.17.6: fix bug introduced by 1.0.7.3
Nikodemus Siivola [Thu, 29 May 2008 11:16:52 +0000 (11:16 +0000)]
1.0.17.6: fix bug introduced by 1.0.7.3

 * References to named constants now need MAYBE-EMIT-LOAD-FORM as well
   -- so we may just as well move it to FIND-CONSTANT.

 * Test-case, adepted from Swank.

16 years ago1.0.17.5: alter PROBE-FILE so that no signal is raised during its execution.
Richard M Kreuter [Thu, 29 May 2008 00:53:35 +0000 (00:53 +0000)]
1.0.17.5: alter PROBE-FILE so that no signal is raised during its execution.

16 years ago1.0.17.4: support for dynamic-extent structures
Nikodemus Siivola [Wed, 28 May 2008 22:32:28 +0000 (22:32 +0000)]
1.0.17.4: support for dynamic-extent structures

 * Replace %MAKE-INSTANCE-WITH-LAYOUT with %MAKE-STRUCTURE-INSTANCE,
   which has an IR2 transform that can handle both initialization and
   allocation of the structure. On x86 and x86-64 it can initialize
   all slots, whereas on other platforms it only does the layout and
   non-raw slots. (See RAW-INSTANCE-INIT/* below.)

 * EMIT-INITS needs two new kinds of inits to handle: :SLOT for
   instance slots, and :DD for the defstruct-description/layout.

 * DEF-ALLOC doesn't anymore use a simple boolean for denoting
   variable length allocation, but instead a keyword: either
   :VAR-ALLOC, :FIXED-ALLOC, or :STRUCTURE-ALLOC.

 * New VOPs: RAW-INSTANCE-INIT/* for all raw slot types, which are
   almost identical to RAW-INSTANCE-SET[-C]/* VOPs, except that they
   always have a constant index and do not return a result. Structures
   with raw slots can be stack allocated only on platforms that
   implement these VOPs, denoted in make-config.sh by the
   :RAW-INSTANCE-INIT-VOPS feature. ...we really could use a
   *VM-FEATURES* or something.

16 years ago1.0.17.3: unify CONSTANT nodes for DEFCONSTANT and literal constants
Nikodemus Siivola [Wed, 28 May 2008 16:23:12 +0000 (16:23 +0000)]
1.0.17.3:  unify CONSTANT nodes for DEFCONSTANT and literal constants

 * Prevents at least some cases which used to introduce duplicate
   constants into code objects.

 * The above causes all CONSTANTS being :DEFINED and anonymous, which
   is generally speaking not a problem, but causes trouble for XREF,
   which wants to generate REFERENCES information for constants as
   well. ...so, we add a %SOURCE-NAME slot to REF, allowing us to have
   references to a shared constant under multiple names.

 * Test-case.

16 years ago1.0.17.2: better PRINT-OBJECT method for threads
Nikodemus Siivola [Wed, 28 May 2008 16:00:35 +0000 (16:00 +0000)]
1.0.17.2: better PRINT-OBJECT method for threads

 * In addition to name, if any, print current state (RUNNING, ABORTED, or
   FINISHED), and any values returned by the thread if it has finished.

16 years ago1.0.17.1: describe_tread_state() for GDB convenience
Nikodemus Siivola [Wed, 28 May 2008 15:57:52 +0000 (15:57 +0000)]
1.0.17.1: describe_tread_state() for GDB convenience

 * Add describe_thread_state() to runtime, intended to be mainly
   called from GDB: prints out important bits of the current signal
   mask, and values of some special variables.

16 years ago1.0.17: release
Christophe Rhodes [Wed, 28 May 2008 12:00:04 +0000 (12:00 +0000)]
1.0.17: release
will be tagged as sbcl_1_0_17

16 years ago1.0.16.46: small fixes to tests
Nikodemus Siivola [Mon, 26 May 2008 18:27:17 +0000 (18:27 +0000)]
1.0.16.46: small fixes to tests

 * Remove the WITH-TIMEOUT from around the final test: it just made it
   brittle, if something caused the threads to take slightly longer.

   Add a comment about a semi-randomly broken :SCHEDULE-STRESS test in
   timers.impure.lisp.

 * Typo in ctor.impure.lisp: UPDATE-INSTANCE-FOR-REDEFINED-CLASS,
   not UPDATE-INSTANCE-FOR-REDIFINED-CLASS. (Thank to Paul Khuong)

16 years agorestore non-consingness of WITH-SPINLOCK
Nikodemus Siivola [Mon, 26 May 2008 07:38:28 +0000 (07:38 +0000)]
restore non-consingness of WITH-SPINLOCK

 * Move the STACK-ALLOCATE-VALUE-CELLS declarations to DX-LET, and to
   the right scope. (Free declaration.)

16 years ago1.0.16.44: fix stackp handling in define-cloned-fop
Christophe Rhodes [Fri, 23 May 2008 23:26:22 +0000 (23:26 +0000)]
1.0.16.44: fix stackp handling in define-cloned-fop
(Non-exposed bug spotted by Larry Valkama sbcl-devel 2008-04-30)

16 years ago1.0.16.43: test fixes
Christophe Rhodes [Thu, 22 May 2008 08:11:06 +0000 (08:11 +0000)]
1.0.16.43: test fixes
From Vitaly Mayatskikh (sbcl-devel 2008-05-21)

16 years ago1.0.16.42: Fix LOCALLY in fopcompiled context
Christophe Rhodes [Wed, 21 May 2008 12:25:44 +0000 (12:25 +0000)]
1.0.16.42: Fix LOCALLY in fopcompiled context
Patch by Juho Snellman; gentle prodding by Attila Lendvai.

16 years ago1.0.16.41: target-load.lisp: simplify defaulting for pathnames with type NIL.
Richard M Kreuter [Tue, 20 May 2008 20:35:43 +0000 (20:35 +0000)]
1.0.16.41: target-load.lisp: simplify defaulting for pathnames with type NIL.

* Simplify the logic that looks for files with suitable extensions
  when the argument pathname has NIL for a type.  The existing code
  leads to misreporting of unhandled FILE-ERRORs during LOAD.

* Scrape out unnecessary erroring introduced around the same time as
  the flawed defaulting logic.

16 years ago1.0.16.40: implement %SET-SYMBOL-VALUE-IN-THREAD
Nikodemus Siivola [Mon, 19 May 2008 16:46:36 +0000 (16:46 +0000)]
1.0.16.40: implement %SET-SYMBOL-VALUE-IN-THREAD

 * Eventually we may want to export this, but let's keep it internal
   for now...

 * Rename SB-THREAD::SYMBOL-VALUE-IN-THREAD to
   %SYMBOL-VALUE-IN-THREAD, and make it work with thread objects
   instead of SAPs. Also, never return the global value, but instead
   signal an error if the symbol is unbound in the thread.

 * Similarly, rename THREAD-SAP-FOR-ID to %THREAD-SAP, and make it
   work with thread objects instead of os-thread pointer values (née
   thread ids).

 * Rename CURRENT-THREAD-SAP-ID to CURRENT-THREAD-OS-THREAD.

16 years ago1.0.16.39: small lisp-side interrupt handling improvements
Nikodemus Siivola [Mon, 19 May 2008 14:06:28 +0000 (14:06 +0000)]
1.0.16.39: small lisp-side interrupt handling improvements

 * In INVOKE-INTERRUPTION, disable interrupts before doing the interrupt
   handler bindings -- no point in making the window for recursive interrupts
   any bigger then it already is.

 * Similarly, ALLOW-WITH-INTERRUPTS only after the *STACK-TOP-HINT*
   has been computed. (Actually, the stack top hint computation should
   not be done for all interrupts, instead it would be better to add
   an argument to indicate we want to start from the interrupted frame
   to MAP-BACKTRACE.)

 * Declare the &REST argument of (FLET RUN-HANDLER) dynamic extent.

16 years ago1.0.16.38: document :CYCLE-COUNTER feature in base-target-features.lisp-expr
Nikodemus Siivola [Mon, 19 May 2008 13:47:17 +0000 (13:47 +0000)]
1.0.16.38: document :CYCLE-COUNTER feature in base-target-features.lisp-expr

 * Weaseling out from renaming it to :SB-CYCLE-COUNTER, and deferring that
   a bit: seems better to take care of all similar features that are really
   just built-time conveniences automatically inferred at the same time.

16 years ago1.0.16.37: fix bug #206 -- SB-FLUID build works once more
Nikodemus Siivola [Sat, 17 May 2008 20:05:09 +0000 (20:05 +0000)]
1.0.16.37: fix bug #206 -- SB-FLUID build works once more

 * Thanks to Sidney Markowitz for tracking down the bad INLINE
   declamations.

16 years ago1.0.16.36: fix Windows build, hopefully
Nikodemus Siivola [Sat, 17 May 2008 19:52:21 +0000 (19:52 +0000)]
1.0.16.36: fix Windows build, hopefully

 * Make OS-ATTR part of the thread object only on threaded platforms.

16 years ago1.0.16.35: improved TIME output
Nikodemus Siivola [Sat, 17 May 2008 11:02:27 +0000 (11:02 +0000)]
1.0.16.35:  improved TIME output

 * Print measured times using fixed-width decimal output with the
   measured precision, instead of converting to floats for printing.

 * Report processor cycle counts on x86 and x86-64.
   ** Since Intel doesn't seem to consider it necessary to issue a
      CPUID both before and after RDTSC, maybe we don't need to do
      that either.
   ** New feature, :CYCLE-COUNTER, for platforms that implement
      SB-VM::%READ-CYCLE-COUNTER.

 * Instead of reporting %EVAL calls, report "interpreted forms", which means
   both %EVAL and SIMPLE-EVAL-IN-LEXENV.

 * Report "lambdas converted" for the compiler, not counting TL-XEPs.

 * Report CPU percentage (computed from real and run time.)

 * Report total run time separately. Condence run time output slightly
   by reporting total, user, and system on the same line.

 * Report non-GC time as well.

 * Condence output by omitting page faults, converted lambdas, and
   interpreted forms when they are zero.

16 years ago1.0.16.34: Remove global STACK-ALLOCATE-VALUE-CELLS proclamation in make-host-2.lisp
pkhuong [Fri, 16 May 2008 18:55:00 +0000 (18:55 +0000)]
1.0.16.34: Remove global STACK-ALLOCATE-VALUE-CELLS proclamation in make-host-2.lisp

* 1.0.16.29 introduced a new optimization quality to control the stack-allocation
  of value cells. All the places in the code base where it was needed now declare
  it explicitly.

16 years ago1.0.16.33: UNION and NUNION work with :TEST-NOT again
Nikodemus Siivola [Fri, 16 May 2008 06:55:05 +0000 (06:55 +0000)]
1.0.16.33: UNION and NUNION work with :TEST-NOT again

 * Patch by Eric Marsden. Broken at 1.0.9.1 by yours truly.

16 years ago1.0.16.32: revert ANY-REG from registers for primitive type T on x86oids
Nikodemus Siivola [Thu, 15 May 2008 16:10:02 +0000 (16:10 +0000)]
1.0.16.32: revert ANY-REG from registers for primitive type T on x86oids

 * While register sets for DESCRIPTOR-REG and ANY-REG are identical on
   x86 and x86-64, the compiler reasons about them a bit differently
   -- so the earlier change is wrong, and caused a regression.

 * Test-case to catch the regression, reduced from Elephant sources.

 * Record the bug the earlier change tried to address as #427.

16 years ago1.0.16.31: --control-stack-size runtime argument
Nikodemus Siivola [Thu, 15 May 2008 15:37:48 +0000 (15:37 +0000)]
1.0.16.31: --control-stack-size runtime argument

 * THREAD_CONTROL_STACK_SIZE becomes DEFAULT_CONTROL_STACK_SIZE.

 * Align thread spaces using the larger of BACKEND_PAGE_SIZE and
   CONTROL_STACK_ADJUSTMENT_BYTES.

 * Take care of aligning both ends of the control stack when setting
   up the thread struct -- that way pthread_attr_setstack doesn't have
   to worry about alignment.

 * Simplify stack setup in on x86oid platforms in
   call_into_lisp_first_time: instead of having the nasty window where
   ESP/RSP is right at the end of the stack, use pull out the control
   stack end right out of the thread struct.

 * Minimal documentation.

 Not strictly related to --control-stack-size:

 * Refactor thread post mortem cleanups to share as much code as
   possible and reduce conditionalization. The core functions in the
   new world are plan_thread_post_mortem, schedule_thread_post_mortem,
   and perform_thread_post_mortem.

 * Malloc thread attributes, and destroy them before freeing thread
   stacks. (pthread_attr_setstack seems to say that we are not allowed
   to free stacks that have attributes referring to them -- hopefully
   pthread_attr_destroy gives us the licence we need, and since it is
   not entirely clear we are allowed to destroy the attr before the
   thread has finished, do it only after pthread_join.)

16 years ago1.0.16.30: couple of small Darwin cleanups
Nikodemus Siivola [Thu, 15 May 2008 13:45:26 +0000 (13:45 +0000)]
1.0.16.30: couple of small Darwin cleanups

 * Add -lpthread os OS_LIBS on x86 builds as well, since malloc()
   may not be thread-safe without it (but with it it apparently should
   be...)

 * Pass -arch x86_64 to the C compiler in foreign.test.sh when doing
   64 bit builds on Darwin, since x86 is the default there.

16 years ago1.0.16.29: workaround for bug 419
Nikodemus Siivola [Mon, 12 May 2008 14:12:42 +0000 (14:12 +0000)]
1.0.16.29: workaround for bug 419

 * Require an explicit SB-C::STACK-ALLOCATE-VALUE-CELLS optimize
   declaration before stack allocating value cells to prevent
   returning garbage values from hairy user code.

16 years ago1.0.16.28: Update asdf contrib to latest upstream CVS (1.117)
Christophe Rhodes [Sun, 11 May 2008 07:42:04 +0000 (07:42 +0000)]
1.0.16.28: Update asdf contrib to latest upstream CVS (1.117)
Disables the LOAD-PREFERENCES mechanism, which could interfere
with SBCL builds.

16 years ago1.0.16.27: function-ify ERROR-CALL and GENERATE-ERROR-CODE on x86-64
Nikodemus Siivola [Thu, 8 May 2008 15:05:22 +0000 (15:05 +0000)]
1.0.16.27: function-ify ERROR-CALL and GENERATE-ERROR-CODE on x86-64

 * Port of 1.0.16.10 to x86-64.

16 years ago1.0.16.26: dx allocation thru CAST nodes
Nikodemus Siivola [Thu, 8 May 2008 11:52:04 +0000 (11:52 +0000)]
1.0.16.26: dx allocation thru CAST nodes

 * Allow DX allocation of LVARs thru cast nodes without type checks.

 * Since it is not obvious to me that all uses of CAST-VALUE must be
   in the same component as the cast itself, AVER that.

 * Results of MAKE-ARRAY can once more be stack allocated. Regression
   caused by different handling of TRULY-THE introducing cast nodes
   where there previously were none.

 * Tests.

16 years ago1.0.16.25: restore buildability on threaded x86-64
Nikodemus Siivola [Thu, 8 May 2008 10:08:46 +0000 (10:08 +0000)]
1.0.16.25: restore buildability on threaded x86-64

 * GENERATE-ERROR-CODE is still a macro on x86-64, so no quoting
   TLS-EXHAUSTED-ERROR.

16 years ago1.0.16.24: slightly more verbose errors for SB-FOO symbols in genesis
Nikodemus Siivola [Thu, 8 May 2008 08:53:31 +0000 (08:53 +0000)]
1.0.16.24: slightly more verbose errors for SB-FOO symbols in genesis

 * ...faster to fix when the error tells you what the problematic
   symbol was.

16 years ago1.0.16.23: type-inconsistencies in HASH-TABLE accessors
Nikodemus Siivola [Thu, 8 May 2008 08:38:09 +0000 (08:38 +0000)]
1.0.16.23: type-inconsistencies in HASH-TABLE accessors

 * DEFKNOWN types did not match the slot types. Change the defknowns
   to match the DEFSTRUCT.

16 years ago1.0.16.22: FIXED-ALLOC to use MAYBE-PSEUDO-ATOMIC on x86 and x86-64.
Nikodemus Siivola [Thu, 8 May 2008 08:21:41 +0000 (08:21 +0000)]
1.0.16.22: FIXED-ALLOC to use MAYBE-PSEUDO-ATOMIC on x86 and x86-64.

 * PA is not needed with stack allocation.

 * Also rename the first argument to MAYBE-PSEUDO-ATOMIC to
   NOT-REALLY-P to avoid confusion.

16 years ago1.0.16.21: lose informatively when the tls is full
Gabor Melis [Thu, 8 May 2008 07:14:01 +0000 (07:14 +0000)]
1.0.16.21: lose informatively when the tls is full

  Instead of eventually producing a segv or some random corruption:

  (progv (loop for i below 5000
               collect (make-symbol (format nil "xxx~D" i)))
         (loop for i below 5000 collect i))

16 years ago1.0.16.20: update GIT-FOR-SBCL-HACKERS
Gabor Melis [Tue, 6 May 2008 16:54:35 +0000 (16:54 +0000)]
1.0.16.20: update GIT-FOR-SBCL-HACKERS

Make it a bit less misleading about the actual treatment of
version.lisp-expr.

16 years ago1.0.16.19: cleanups motivated by clisp host-2
Christophe Rhodes [Tue, 6 May 2008 16:43:52 +0000 (16:43 +0000)]
1.0.16.19: cleanups motivated by clisp host-2

16 years ago1.0.16.18: Fixes to get clisp through host-1
Christophe Rhodes [Tue, 6 May 2008 10:45:42 +0000 (10:45 +0000)]
1.0.16.18: Fixes to get clisp through host-1
Just a couple of ignores and code rearrangements.

16 years ago1.0.16.17: log bug #426: inlining failure involing multiple nested calls
Nikodemus Siivola [Mon, 5 May 2008 13:26:06 +0000 (13:26 +0000)]
1.0.16.17: log bug #426: inlining failure involing multiple nested calls

 * Not a regression, but apparently of CMUCL vintage.

16 years ago1.0.16.16: Use declared element type in AREF short-circuit transform
Christophe Rhodes [Sun, 4 May 2008 20:14:35 +0000 (20:14 +0000)]
1.0.16.16: Use declared element type in AREF short-circuit transform
The short-circuit transformation introduced in 1.0.2.17
removed the system's understanding of the declared array element
type (as opposed to the upgraded array element type).
Reintroduce the cleverness, and hope that the use of type=
doesn't remove all the slowdown.

(Issue noted by vy on #lisp afternoon 2008-05-04 BST)

16 years ago1.0.16.15: fix TRANSFORM-LIST-ITEM-SEEK for ADJOIN with constant list arg
Nikodemus Siivola [Sun, 4 May 2008 15:06:37 +0000 (15:06 +0000)]
1.0.16.15: fix TRANSFORM-LIST-ITEM-SEEK for ADJOIN with constant list arg

 * Urk, missed a spot. There is probably little sense to open code ADJOIN
   like ASSOC and MEMBER, so let's not.

 * Tests.

16 years ago1.0.16.14:
Thiemo Seufer [Tue, 29 Apr 2008 23:43:03 +0000 (23:43 +0000)]
1.0.16.14:
Fix compiler warning.

16 years ago1.0.16.13: use TRANSFORM-LIST-ITEM-SEEK for ADJOIN as well
Nikodemus Siivola [Tue, 29 Apr 2008 13:58:51 +0000 (13:58 +0000)]
1.0.16.13: use TRANSFORM-LIST-ITEM-SEEK for ADJOIN as well

 * Now that the freeze was cancelled, do this properly...

16 years ago1.0.16.12: revert ADJOIN change from 1.0.16.5
Nikodemus Siivola [Mon, 28 Apr 2008 21:48:39 +0000 (21:48 +0000)]
1.0.16.12: revert ADJOIN change from 1.0.16.5

 * The correct expansion is a bit too hairy to implement nicely
   with a compiler macro.

 * Test-cases.

 Second take using TRANSFORM-LIST-ITEM-SEEK coming after the freeze.

16 years ago1.0.16.11: ANY-REG is good for pritimitive-type T on x86/x86-64
Nikodemus Siivola [Thu, 24 Apr 2008 08:36:11 +0000 (08:36 +0000)]
1.0.16.11: ANY-REG is good for pritimitive-type T on x86/x86-64

 * Report and test case by Stelian Ionescu.

16 years ago1.0.16.10: function-ify ERROR-CALL and GENERATE-ERROR-CODE on x86
Nathan Froyd [Thu, 24 Apr 2008 04:08:48 +0000 (04:08 +0000)]
1.0.16.10: function-ify ERROR-CALL and GENERATE-ERROR-CODE on x86

* Saves ~120k in core size.

* Should be done for other backends and ERROR-CALL &co.
  refactored appropriately.

16 years ago1.0.16.9: restore buildability from CMUCL
Christophe Rhodes [Wed, 23 Apr 2008 21:43:58 +0000 (21:43 +0000)]
1.0.16.9: restore buildability from CMUCL
CMUCL justifiably emits warning on (ecase ... (...) (t ...)).
Use ((t) ...) instead as the last clause.  Reported by Andreas
Franke (sbcl-devel 2008-04-23).

16 years ago1.0.16.8: NCONC with dx &rest lists
Nikodemus Siivola [Wed, 23 Apr 2008 18:21:13 +0000 (18:21 +0000)]
1.0.16.8: NCONC with dx &rest lists

 * Remove MAYBE-INLINE declaration: with dx &rest list inlining NCONC doesn't
   yield any real benefits.

 * Also delete some dead code, and NCONC2 -- interestingly unlike with
   APPEND, a compiler-macro to NCONC2 seems to hurt more then it helps
   (not that it hurts in any real way).

16 years ago1.0.16.7: slightly faster LAST
Nikodemus Siivola [Wed, 23 Apr 2008 17:40:38 +0000 (17:40 +0000)]
1.0.16.7: slightly faster LAST

 * Remove MAYBE-INLINE declaration and separate into out-of-line
   %LAST0, %LAST1, %LASTN/FIXNUM, and (rather academically)
   %LASTN/BIGNUM.

 * Add a DEFTRANSFORM to optimize to the most specific version
   possible.

16 years ago1.0.16.6: slightly faster APPEND
Nikodemus Siivola [Wed, 23 Apr 2008 15:42:30 +0000 (15:42 +0000)]
1.0.16.6: slightly faster APPEND

 * Declare &REST dynamic-extent and remove MAYBE-INLINE declaration.

 * Micro-optimization for type-checking and list walking.

 * Compiler-macro into APPEND2 for the common 2 argument case.

16 years ago1.0.16.5: faster ADJOIN in normal speed policies
Nikodemus Siivola [Wed, 23 Apr 2008 15:29:28 +0000 (15:29 +0000)]
1.0.16.5: faster ADJOIN in normal speed policies

 * Remore MAYBE-INLINE declaration, and add a compiler macro so that
   MEMBER transform is able to its job.

16 years ago1.0.16.4: correct nested DX reasoning
Nikodemus Siivola [Tue, 22 Apr 2008 09:56:37 +0000 (09:56 +0000)]
1.0.16.4: correct nested DX reasoning

 * Propagate dynamic-extentness to an argument of a function whose
   result is going to be dx-allocated only if all uses of the argument
   lvars are good-for-dx combinations -- otherwise we may accidentally
   cause DX allocation of things accessible via other variables.

16 years ago1.0.16.3: fnstsw %eax is invalid assembler syntax.
Christophe Rhodes [Thu, 17 Apr 2008 14:46:17 +0000 (14:46 +0000)]
1.0.16.3: fnstsw %eax is invalid assembler syntax.
Report and patch from Marijn Schouten (sbcl-devel 2008-04-10)

16 years ago1.0.16.2: Fix FASL header checking logic
Christophe Rhodes [Thu, 17 Apr 2008 14:05:01 +0000 (14:05 +0000)]
1.0.16.2: Fix FASL header checking logic
We mustn't read a word argument before we're sure that the
wordsize is right; otherwise we risk trying to create a string
of length approximately 2^32.
... reported by stassats@gmail.com on sbcl-devel 2008-04-16

16 years ago1.0.16.1: fix heap-allocated alien variable reference
Alexey Dejneka [Sun, 13 Apr 2008 03:48:18 +0000 (03:48 +0000)]
1.0.16.1: fix heap-allocated alien variable reference

16 years ago1.0.16: release, will be tagged as sbcl_1_0_16
William Harold Newman [Sun, 13 Apr 2008 01:39:01 +0000 (01:39 +0000)]
1.0.16: release, will be tagged as sbcl_1_0_16

16 years ago1.0.15.41: sod this, revert to the old & simple tar-using contrib installation
Nikodemus Siivola [Thu, 27 Mar 2008 17:40:30 +0000 (17:40 +0000)]
1.0.15.41: sod this, revert to the old & simple tar-using contrib installation

 * Windows has occasionally *.FASL files, so *.fasl is not robust. Copy
   all the files using tar, but keep the find + chown so that contribs
   are owned by the installer, not the builder.

16 years ago1.0.15.40: more portable contrib module installation
Nikodemus Siivola [Wed, 26 Mar 2008 19:32:35 +0000 (19:32 +0000)]
1.0.15.40: more portable contrib module installation

 * Going in despite the freeze: earlier version depended on GNU tar,
   and broke install.sh on installations where tar was not GNU.

 * Patch by Eugene Ossintsev.

16 years ago1.0.15.39: Remove subclasses of sb-posix:syscall-error
Richard M Kreuter [Wed, 26 Mar 2008 15:54:11 +0000 (15:54 +0000)]
1.0.15.39: Remove subclasses of sb-posix:syscall-error

These were added in 1.0.14 (but never documented), and turn out to be
impediments to some future progress on Windows.

16 years ago1.0.15.38: One more fix for Win32 (oops)
Richard M Kreuter [Tue, 25 Mar 2008 21:27:33 +0000 (21:27 +0000)]
1.0.15.38: One more fix for Win32 (oops)

* contrib/sb-posix/posix-tests.lisp: feature-out the fcntl tests on Win32.

16 years ago1.0.15.37: Windows fixes.
Richard M Kreuter [Tue, 25 Mar 2008 21:24:24 +0000 (21:24 +0000)]
1.0.15.37: Windows fixes.

* tools-for-build/grovel-headers.c: add a grovel for EINTR

* contrib/sb-posix/constants.lisp: feature-out the ALIEN-FLOCK structure.

16 years ago1.0.15.36: fix bug 423
Nikodemus Siivola [Mon, 17 Mar 2008 17:13:40 +0000 (17:13 +0000)]
1.0.15.36: fix bug 423

 * TRULY-THE no longer eagerly annotates the LVAR, but rather acts
   like THE in unsafe code. (Inserts a cast for which no type-check is
   generated.)

 * ALLOC-NUMBER-STACK-SPACE and ALLOC-ALIEN-STACK-SPACE were missing
   :RESULT-TYPES, which was masked by the old TRULY-THE
   implementation. (Tested on x86, x86-64, PPC, but all backends
   updated -- hopefully correctly.)

 * Docstrings for THE and TRULY-THE.

 FWIW, this patch seems to make PPC+GENCGC build happy once again: but
 I don't know if that means the problems there were/are related to bug
 423 -- or if the exact memory layout just happens to change subtly so
 that whatever corruption occurs, just happens to occur in a place
 where the GC doesn't see it anymore. (Or if the exact point at which
 GC runs is now just slightly different so that the problem pointers
 are not live anymore, or...)

16 years ago1.0.15.35: fix bitrotted GC sanity checks
Nikodemus Siivola [Mon, 17 Mar 2008 14:10:04 +0000 (14:10 +0000)]
1.0.15.35: fix bitrotted GC sanity checks

 * One missing #ifdef.

 * Better lossage messages for for some cases.

16 years ago1.0.15.34: tweak the PCL cache improvement from 1.0.15.12
Nikodemus Siivola [Fri, 14 Mar 2008 20:41:25 +0000 (20:41 +0000)]
1.0.15.34: tweak the PCL cache improvement from 1.0.15.12

 * Thanks to Paul Khuong for noting that we weren't actually dropping
   50% of the entries, but somewhat less. Now (assuming our RANDOM is
   good) we really should average 50%.

16 years ago1.0.15.33: implement SB-VM::WITH-CYCLE-COUNTER for x86 and x86-64
Nikodemus Siivola [Fri, 14 Mar 2008 20:10:17 +0000 (20:10 +0000)]
1.0.15.33: implement SB-VM::WITH-CYCLE-COUNTER for x86 and x86-64

 * For potential future exporting from SB-SYS.

 * Thanks to Paul Khuong and the CMUCL team.

16 years ago1.0.15.32: shinier SB-BSD-SOCKET:MAKE-INET-ADDRESS
Nikodemus Siivola [Fri, 14 Mar 2008 19:44:25 +0000 (19:44 +0000)]
1.0.15.32: shinier SB-BSD-SOCKET:MAKE-INET-ADDRESS

 * Check the input string for wellformedness, and construct a
   specialized vector.

16 years ago1.0.15.31: thread-safe FIND-CLASS -- really this time
Nikodemus Siivola [Fri, 14 Mar 2008 19:03:05 +0000 (19:03 +0000)]
1.0.15.31: thread-safe FIND-CLASS -- really this time

  Call It Myopia: it turns out FIND-CLASSOID &co underneath FIND-CLASS
  (when called for non-existent classes) were not thread-safe either.

  * Get rid of *FIND-CLASS* hash-table, moving the actual PCL classes into
    corresponding CLASSOID-CELL (new slot PCL-CLASS).

  * Move classoid-cells from the infodb into into *CLASSOID-CELLS*
    hash-table. We want to be able to lock around

      (or (get-cell) (setf (get-cell) (make-cell)))

    and infodb isn't really designed for that. This is the crux of
    the breakage:

     *** parallel writes to infodb are not thread safe! ***

  * Lock over *CLASSOID-CELLS* and *FORWARD-REFERENCED-LAYOUTS*. The
    latter should not be really necessary as long as we don't
    assume (SETF FIND-CLASS) to be thread-safe, but easier to reason
    about it this way. ...and it would be nice for the SETF to be safe
    as well.

  Related work:

  * Don't create cells for non-exitent classes unless we know we are
    going to need them -- previously both FIND-CLASSOID and FIND-CLASS
    created a cell for every name they were called with, which is
    isn't too good. This is especially important as once created these
    cells never go away!

16 years ago1.0.15.30: thread-safe FIND-CLASS
Nikodemus Siivola [Thu, 13 Mar 2008 18:35:48 +0000 (18:35 +0000)]
1.0.15.30: thread-safe FIND-CLASS

  * Reported by Attila Lendvai.

  ...I could have sworn I did this already...

16 years ago1.0.15.29: record bugs 424 and 425
Nikodemus Siivola [Thu, 13 Mar 2008 15:40:28 +0000 (15:40 +0000)]
1.0.15.29: record bugs 424 and 425

16 years ago1.0.15.28: SB-INTROSPECT: source-locations for objects
Nikodemus Siivola [Thu, 13 Mar 2008 15:23:32 +0000 (15:23 +0000)]
1.0.15.28: SB-INTROSPECT: source-locations for objects

 * FIND-DEFINITION-SOURCE returns the source-location of the class for
   standard-objects, conditions, and structure objects.

 * Patch by Tobias C. Rittweiler.

16 years ago1.0.15.27: nicer lambda-lists for GCD and LCM
Nikodemus Siivola [Thu, 13 Mar 2008 15:20:56 +0000 (15:20 +0000)]
1.0.15.27: nicer lambda-lists for GCD and LCM

 * Patch by Tobias C. Rittweiler.

16 years ago1.0.15.26: only one return value from USER-HOMEDIR-PATHNAME
Nikodemus Siivola [Thu, 13 Mar 2008 15:19:14 +0000 (15:19 +0000)]
1.0.15.26: only one return value from USER-HOMEDIR-PATHNAME

 * USER-HOMEDIR-PATHNAME invokes PARSE-NATICE-NAMESTRING in a tailcall
   which returns the parsing offset as secondary value---although
   USER-HOMEDIR-PATHNAME is specified to only return on value; wrap it
   in an explicit (values ...) call.

   Patch by Tobias C. Rittweiler.

16 years ago1.0.15.25: fix ~R for vigtillions
Nikodemus Siivola [Thu, 13 Mar 2008 13:18:49 +0000 (13:18 +0000)]
1.0.15.25: fix ~R for vigtillions

 * Off-by-one error in sb-format::format-print-cardinal-aux was
   preventing ~R from printing numbers between 10^63 and 10^66-1.

   Patch by Luis Oliveira.

16 years ago1.0.15.24: SB-BSD-SOCKETS: add :DONTWAIT option to SOCKET-RECEIVE
Nikodemus Siivola [Thu, 13 Mar 2008 11:35:20 +0000 (11:35 +0000)]
1.0.15.24: SB-BSD-SOCKETS: add :DONTWAIT option to SOCKET-RECEIVE

 * For symmetry with SOCKET-SEND.

16 years ago1.0.15.23: typos and grammar
Nikodemus Siivola [Thu, 13 Mar 2008 11:07:45 +0000 (11:07 +0000)]
1.0.15.23: typos and grammar

 * Fix manpage typo: "inplements". Thanks to Eugene "Oversight"
   Ossintsev.

 * Fix PPRINT-INDENT docstring: s/is it is a/is a/. Thanks to Cyrus
   "Hawkeye" Harmon.

16 years ago1.0.15.22: slightly nicer contrib installation
Nikodemus Siivola [Thu, 13 Mar 2008 10:59:59 +0000 (10:59 +0000)]
1.0.15.22: slightly nicer contrib installation

 * Install owned by the install.sh runner, not builder. Don't install
   CVS directories.

 * Thanks to Eugene Ossintsev.

16 years ago1.0.15.21: SB-BSD-SOCKETS:NAME-SERVICE-ERROR to inherit from ERROR
Nikodemus Siivola [Thu, 13 Mar 2008 10:32:40 +0000 (10:32 +0000)]
1.0.15.21: SB-BSD-SOCKETS:NAME-SERVICE-ERROR to inherit from ERROR

 * Thanks to Stanislaw Halik.

16 years ago1.0.15.20: refactor "system locks" framework, one TIMER buglet
Nikodemus Siivola [Wed, 12 Mar 2008 18:32:45 +0000 (18:32 +0000)]
1.0.15.20: refactor "system locks" framework, one TIMER buglet

 * Choose the degree of GC/interrupt suppression at compile-time.

 * Default is not to allow interrupts at all, callers which need
   WITH-INTERRUPTS to work can now specify :ALLOW-WITH-INTERRUPTS.

 * Should fix reported Stumpwm crashes due to attempts to recursively
   obtain *SCHEDULER-LOCK*. (Caused by SIGALRM interrupting GET-MUTEX
   inside the call to %TIMER-CANCEL-FUNCTION, which led to recursive
   entry to WITH-SCHEDULER-LOCK.)

 * Don't reschedule timers for dead threads.

 * Three new test-cases for timers, which (1) represent my failing
   attempts to trigger the Stumpwm bug described above (2) led to
   noticing the rescheduling promblem (3) fail horribly on OS X Tiger
   -- not sure if this is our or Darwin's problem...

16 years ago1.0.15.19: use TEST X X when possible in SIGNED-BYTE-*-LEN VOPS
Nikodemus Siivola [Mon, 10 Mar 2008 19:26:15 +0000 (19:26 +0000)]
1.0.15.19: use TEST X X when possible in SIGNED-BYTE-*-LEN VOPS

 * Both x86 and x86-64.

16 years ago1.0.15.18: kill commented out ALLOCATION from x86-64
Nikodemus Siivola [Mon, 10 Mar 2008 19:18:01 +0000 (19:18 +0000)]
1.0.15.18: kill commented out ALLOCATION from x86-64

 * 'twas a duplicate of ALLOCATION-TRAMP.

16 years ago1.0.15.17: better threaded BIND & UNBIND for x86-64
Nikodemus Siivola [Mon, 10 Mar 2008 18:49:17 +0000 (18:49 +0000)]
1.0.15.17: better threaded BIND & UNBIND for x86-64

 * x86-64 port of 1.0.15.7, plus some x86 cleanups:

   -- Rename ALLOCATE-TLS-INDEX-* to ALLOC-TLS-INDEX-* for more
      consistent asm routine names.

   -- Use (FIXNUMIZE 1) instead of magic number 4.

   Shrinks the threaded x86-64 core by ~200k bytes.

16 years ago1.0.15.16: New modular arithmetic representation decision
Christophe Rhodes [Fri, 7 Mar 2008 12:26:37 +0000 (12:26 +0000)]
1.0.15.16: New modular arithmetic representation decision
Prefers any exactly-matching modular implementation, then tagged
if possible, then untagged.  Should make code of the form
          (logand xxx most-positive-fixnum)
more tolerable.

Also includes better lognot/fixnum implementation on all
platforms.

Squashed commit of the following:

commit 81776d9aab531db20711320ecea920453e058cef
Author: Christophe Rhodes <csr21@cantab.net>
Date:   Fri Mar 7 04:54:03 2008 -0700

    Fix lognot for fixnums on alpha.

commit 27ce80579851bf9227d7d1121cf1554dc383049d
Author: SBCL devs <sbcl-dev@aleph.math.ualberta.ca>
Date:   Thu Mar 6 15:02:03 2008 -0700

    New modular arithmetic ported to alpha

    (as yet untested beyond make-genesis-2: lognot/fixnum is buggy)

commit d6ae6339374983ae874d85f3c52103c77ccad222
Author: Christophe Rhodes <csr21@localhost.localdomain>
Date:   Fri Jan 11 17:38:19 2008 +0000

    New modular arithmetic ported to mips.

    Tested by Thiemo Seufer.

commit 50e2e51d25bb3d3997e4b884b7a15f7ba1992391
Author: Christophe Rhodes <csr21@localhost.localdomain>
Date:   Fri Jan 11 17:37:41 2008 +0000

    Make find-modular-class get signed and unsigned the right way round.

    As it happened, this all worked by accident anyway, because the only
    other user of the *foo-modular-class* specials didn't rely on the
    separation between the classes, but instead used other data.  Hmm...

    (Noticed by Nikodemus Siivola)

commit d3de3d27b212999672644d8a4fccfce9676dbf4f
Author: Christophe Rhodes <csr21@zeus.jesus.cam.ac.uk>
Date:   Tue Jan 1 14:25:33 2008 +0000

    New modular arithmetic ported to sparc.

    As with ppc, the signed modular arithmetic is not terribly useful, as
    only good functions have been implemented (so no +, -, * and ash)

commit e99c204ab165139f4c8f8aacb59d4a825b90b7d1
Author: Christophe Rhodes <mas01cr@gibbons.doc.gold.ac.uk>
Date:   Mon Dec 31 18:15:41 2007 +0000

    Fix for fixnum LOGNOT on PPC

    Use subfic res, x, -4 rather than xori res, x, -4 -- xori's immediate
    argument is not sign-extended.

    (Thanks to Andy Hefner for the idea to use subfic rather than xori+xoris)

commit db8ffb719750c8bc655519b03c2081cc3b8d0b2e
Author: Christophe Rhodes <mas01cr@gibbons.doc.gold.ac.uk>
Date:   Mon Dec 31 18:13:21 2007 +0000

    New modular arithmetic ported to ppc.

    Simple modifications only.  It remains for someone to add signed modular
    definitions of +, -, * and so on for this to become useful on ppc.

commit 5c7562fc1e2a96a81d9bc32fb77ad70ed1794e6e
Author: Christophe Rhodes <crhodes@gibbons.doc.gold.ac.uk>
Date:   Mon Dec 31 10:12:26 2007 +0000

    New modular arithmetic choice for x86-64

    Simply adapt x86-64/arith.lisp by

    * removing logxor implementation (as it's now :good)
    * adapting %LEA implementation

commit 39054fae6e5a2e55856a506ad497978adcbbd6c2
Author: Christophe Rhodes <csr21@omega.localdomain>
Date:   Sun Dec 30 21:50:16 2007 +0000

    Better fixnum LOGNOT implementations.

    Apparently inherited from cmucl, our fixnum and signed LOGNOT VOPs had
    generator costs that preferred the signed representation over the tagged.
    Fix this (on all backends; tested only on x86)

commit 6eee19de7a49762ea2f3bbfe89d9ea1b0dcee47f
Author: Christophe Rhodes <csr21@omega.localdomain>
Date:   Sun Dec 30 21:29:39 2007 +0000

    Better signed modular arithmetic.

    All the LOGFOO functions are :good modular functions for signed
    modular arithmetic.

    LOGXOR is a :good modular function for untagged unsigned modular
    arithmetic.

commit 32961ecb51bcfea655f985d1f774a8fc46bd155b
Author: Christophe Rhodes <csr21@omega.localdomain>
Date:   Sun Dec 30 19:30:57 2007 +0000

    Split untagged modular class into unsigned and signed variants.

    FIND-MODULAR-VERSION now takes both KIND and SIGNEDP arguments.

commit e3b88693c3721cd84d9fb4a01d624d450c120cdd
Author: Christophe Rhodes <csr21@omega.localdomain>
Date:   Sun Dec 30 17:58:49 2007 +0000

    Choice of modular version, initial commit

    Commit of approximately September vintage work, x86-only.

16 years ago1.0.15.15: reset DF on x86 and x86-64 after every STD instead of when calling out
Nikodemus Siivola [Wed, 5 Mar 2008 15:11:18 +0000 (15:11 +0000)]
1.0.15.15: reset DF on x86 and x86-64 after every STD instead of when calling out

 * Both the old and the new behaviour should be correct re C-ABI, but
   this is much easier to audit. Thanks to Aurelien Jarno for the
   initial patch.

 * This should also fix the build on platforms with GCC 4.3 compiled
   libc signal handling functions, which assume DF to be cleared.

   ** NOTE ** If kernel/libc does not arrange for DF to be cleared
   before calling our handler and restore it afterwards, we can still
   be broken by asynch signals on post 4.3 GCC libcs -- but this Is
   Not Our Fault, We Think.

 * Test-case suggested by Alistair Bridgewater for possible related
   default-unknown-values problems on SunOS.

16 years ago1.0.15.14: move bignum allocation out of line on x86-64 from MOVE-FROM-[UN]SIGNED
Nikodemus Siivola [Wed, 5 Mar 2008 01:48:06 +0000 (01:48 +0000)]
1.0.15.14: move bignum allocation out of line on x86-64 from MOVE-FROM-[UN]SIGNED

 * Essentially port of the work done for x86 earlier (1.0.13.10.)
   Shrinks the core by about 500k.

 * Change the high-bits test on x86 to be clearer about what happens
   (no magic numbers.)

 * Fixups cannot be called directly on x86-64, so make the CALL
   instruction barf on that instead of silently generating bogus code.