Commits on Jun 27, 2007
  1. 1.0.7: release, will be tagged as sbcl_1_0_7

    William Harold Newman committed Jun 27, 2007
Commits on Jun 21, 2007
  1. add test file that was forgotten from

     * clos-interrupts.impure.lisp
    nikodemus committed Jun 21, 2007
Commits on Jun 20, 2007
  1. bogus metacircles due to interrupted applicable method comp.

     * If an interrupt arrives while have stuff on the *CACHE-MISS-VALUES-STACK*
       and the interrupt handler happens to call a gf that is already there,
       we used to think this was a metacircle. Instead we need to bind
       variables like this to "empty" values for interrupt hanlers.
     * Test.
     * Note some bugs.
    nikodemus committed Jun 20, 2007
  2. better heap exhaustion information

     * Print states of *GC-PENDING*, *GC-INHIBIT*, and
       *SIG-STOP-FOR-GC-PENDING* for fatal heap exhaustions.
     * Use alloc_number instead of make_fixnum for requested/available.
    nikodemus committed Jun 20, 2007
  3. fix sb-bsd-socket build on win32

             * Reported by Yaroslav Kavenchuk.
    jsnell committed Jun 20, 2007
Commits on Jun 19, 2007

     * Essentially same underlying macroexpansion, but more flexible in
       use, and possibly even easier to read.
     * Use DX-FLET instead of LAMBDAs in our CALL-WITH-FOO expansions
       to avoid consing up closures.
    nikodemus committed Jun 19, 2007
Commits on Jun 18, 2007
  1. mark most current tests failures on buildbot as expected

            * To make it easier to find out when there are new failures.
    jsnell committed Jun 18, 2007
  2. clean up compiler warnings in the runtime

            * Patch by Robert Brown.
    jsnell committed Jun 18, 2007
  3. better arglists for generic functions

            * Parameter names in the lambda list of the generic function
              are given priority to those of the gf's methods, since the
              names given in the generic function are likely to be more
            * Fix merging of &key parameters of all the methods.
            * Patch by Tobias Rittweiler.
    jsnell committed Jun 18, 2007
  4. make asdf-based contribs more friendly to :FORCE T

            * Do the groveling part of sb-grovel only at contrib build time.
              If the contrib is later recompiled, reuse the results from that
            * Doesn't solve the asdf-binary-locations problems related to
              groveling, but it looks as if asdf-binary-locations is already
              automatically adding SBCL_HOME into it's exceptions list.
    jsnell committed Jun 18, 2007
  5. Don't instrument the internal flets from the PROGV expansion

            * PROGV would get compiled to BINDING-STACK-POINTER -> X, ...,
              UNBIND-TO-HERE would also pop the sentinel from the binding stack,
              and the UNBIND-SENTINEL would then unbalance the stack.
            * Ensure that there will only be matched BIND-SENTINEL /
              UNBIND-SENTINEL pairs between taking the binding stack pointer
              and unwinding by adding some (OPTIMIZE (INSERT-DEBUG-CATCH 0))
    	* Reported by Nikodemus
    jsnell committed Jun 18, 2007
Commits on Jun 15, 2007
  1. small fixes

     * When expanding the CLOS cache, insert the new value before copying
       the old ones, in order to ensure that FILL-CACHE always terminations.
     * Cancel deadline before signalling the DEADLINE-ERROR, so that same
       deadline cannot be caught again during unwind.
    nikodemus committed Jun 15, 2007
Commits on Jun 11, 2007
  1. better standard-specializer-p implementation

    	Instead of defining a gf with several methods, define a new
    	class STANDARD-SPECIALIZER to be used as a superclass to the
    	various specializers that are handled internally in PCL.
    	It's not exported, because we don't want people to subclass it:
    	they will not be able to implement the relevant protocols.
    csrhodes committed Jun 11, 2007
  2. fix compilation speed regression from DATA-VECTOR-REF-WITH-…

    	* Change the remaining x86oid DATA-VECTOR-REF VOPs to
              DATA-VECTOR-REF-WITH-OFFSETs. The VOPs only accept an offset of
              0, and are thus functionally identical to the old ones.
            * This allows replacing the conditional deftransform from D-V-R to
              D-V-R-W-O with an unconditional source-transform.
            * Rewrite transformations with (OR (SIMPLE-UNBOXED-ARRAY (*))
              SIMPLE-VECTOR) argument types to instead do the type tests in the
              body of the transform, since the test can be expressed
              in a cheaper way in the latter case.
    jsnell committed Jun 11, 2007
  3. make WITHOUT-INTERRUPTS non-consing

    	* Consing up a closure for CALL-WITHOUT-INTERRUPTS is a performance
              problem, stack-allocate the closure on platforms with dx support.
            * Doing the stack-allocation properly is a bit tricky, encapsulate
              the right way into the CALL-WITH-DX-FUNCTION macro.
            * TODO: apply the same procedure to other CALL-WITH-FOOs.
    jsnell committed Jun 11, 2007
Commits on Jun 10, 2007
  1. handle unbound markers (from BIND-SENTINEL) in unbind_to_here

    	* Like in the x86oid UNBIND-TO-HERE vop
            * Fixes calling SAVE-LISP-AND-DIE when the call stack contains
              functions compiled with high DEBUG quality
    jsnell committed Jun 10, 2007
Commits on Jun 9, 2007
  1. optimized bignum printing

     * Cache the power-vectors, the computation of which is the real
       bottleneck of bignum printing. So that we don't keep huge bignums
       forever, make GC gently scrub the cache.
     * The ideal cutoff point between the two algorithms isn't the
       fixnum/bignum divide, but is (on x86/Darwin) around 87 bits -- so
       make the cutoff point N-POSITIVE-FIXNUM-BITS * 3, and hope that
       makes sense on other platforms as well.
     This improves (on x86/Darwin) bignum printing speed in the reasonable
     range by 40%, and by 30% while below 2048 bits. The benefit decreases
     after that, as the GC drops bignums with over 2048 bits from the
     cache -- this doesn't show in a tight benchmarking loop, though.
    nikodemus committed Jun 9, 2007
  2. missed tests from

     ...for ADD/REMOVE-METHOD thread safety, that is.
    nikodemus committed Jun 9, 2007
Commits on Jun 8, 2007

     * Old versio used WITH-SLOTS to read DFUN-STATE twice per call,
       but (let ((dfun-state (slot-value gf 'dfun-state))) ...)
       is faster, as it avoids the second lookup.
    nikodemus committed Jun 8, 2007
  2. thread and interrupt safe ADD/REMOVE-METHOD

     * ADD/REMOVE-METHOD need to grab the GF lock and disable interrupts.
       need a lock as well, but instead of adding per-specializer lock
       just use one global one: contention should be minimal here.
     * INTERN-EQL-SPECIALIZER needs a lock.
     * Fix non-threaded build.
     * Delete dead NAME variables from ADD/REMOVE-METHOD.
     * Tests.
    nikodemus committed Jun 8, 2007
  3. thread safety test for the CLOS cache

     ...better late then never.
    nikodemus committed Jun 8, 2007
  4. ALLOW-WITH-INTERRUPTS and interrupt safe WITH-MUTEX &co

     * Remove the *IN-INTERRUPTION* kludge, and replace it with a
       general-purpose mechanism.
     * New variable: *ALLOW-WITH-INTERRRUPTS*. WITH-INTERRUPTS is a no-op
       unless it is true and interrupts are inhibited.
       local macros.
       held before entry to WITHOUT-INTERRUPTS.
       WITH-LOCAL-INTERRUPTS is equivalent to
         (allow-with-interrups (with-interrupts ...))
       but somewhat more efficient.
     * Use the above to make WITH-MUTEX &co interrupt-safe, but still
       interruptible: WITH-FOO becomes
               (when (setf foo (allow-with-interrupts (get-foo)))
                 (with-local-interrupts ...))
             (when foo
               (release-foo foo))))
       and GET-FOO wraps it's waiting section inside a WITH-INTERRUPTS.
     * While at it, rewrite WITH-MUTEX &co to use CALL-WITH-FOO style
     * Write CALL-WITH-SYSTEM-MUTEX as a more efficient alternative to:
         (without-interrupt (with-mutex ...)) ; and
         (without-gcing (with-mutex ...))
       Similarly for CALL-WITH-RECURSIVE-SYSTEM-SPINLOCK, for the benefit
       of PCL.
     * No need to signal a WARNING for WITH-INTERRUPTS inside a WITHOUT-GCING,
       as *ALLOW-WITH-INTERRUPTS* is always false there, so interrupts will
       not be enabled.
    nikodemus committed Jun 8, 2007
  5. AVER that the GF lock is held during SET-DFUN

     ...and adjust commentary in UPDATE-DFUN.
    nikodemus committed Jun 8, 2007
  6. small CLOS cache improvements

     * General PCL cleanups:
       -- Get rid of FUNCTION-FUNCALL and FUNCTION-APPLY: instead just
          declare the argument type. ETOOMANYLAYERSOFABSTRACTION.
       -- Implement the unused GET-FUN in terms of GET-FUN1 for clarity.
     * Use a single bitmask instead of multiply and mask to compute the
       cache index (like the original implementation).
     * Slower probe depth limit growth: caches with 1024 lines used to
       have probe depth 16, which is starting to be on the slow side, and
       some fairly common generics like PRINT-OBJECT have caches with
       enough entries that they will be large no matter what. Instead of
       (ceiling (sqrt lines) 2) make it (ceiling (sqrt (sqrt lines))).
     * Better CACHE-HAS-INVALID-ENTRIES-P (does less work, picks up
       incomplete lines.)
     * MAP-ALL-CACHES and CHECK-CACHE-CONSISTENCY for debugging and
     * Typo in the format string in PRINT-OBJECT (CACHE T).
     * A couple of non-CLOS optimization possibilities recorded.
    nikodemus committed Jun 8, 2007
  7. printing of layoutless structures

     * This used be conditionalized for SB-SHOW builds, but they come up often
       enough when in the debugger during PCL build that it seems worthwhile
       to keep in core.
    nikodemus committed Jun 8, 2007
Commits on Jun 6, 2007
  1. use proper types for STRING-DISPATCH

    	* We only want to let one-dimensional character strings through.
    	  This change will probably produce better code, too.
    Nathan Froyd committed Jun 6, 2007
  2. clean up FD-SOUT a little bit

    	* Apparently the bozos have been dealt with; we now receive strings
    	  to all calls to this function;
    	* Declare types appropriately.
    Nathan Froyd committed Jun 6, 2007
  3. improved WITH-ARRAY-DATA on simple multi-dimensional arrays

    	* Instead of looping to find the underlying one-dimensional simple
    	  array, just return it directly.
    Nathan Froyd committed Jun 6, 2007
Commits on Jun 5, 2007

             * Ensure that *UNWIND-TO-FRAME-FUNCTION* has a TLS index
    jsnell committed Jun 5, 2007
  2. make FD-SOUT slightly faster

    	* Eliminate spurious call to FIND; POSITION gives us enough info.
    Nathan Froyd committed Jun 5, 2007