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

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

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

    nikodemus committed Jun 20, 2007
     * 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.
  2. better heap exhaustion information

    nikodemus committed Jun 20, 2007
     * 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.
  3. fix sb-bsd-socket build on win32

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

    nikodemus committed 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.
Commits on Jun 18, 2007
  1. mark most current tests failures on buildbot as expected

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

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

    jsnell committed Jun 18, 2007
            * 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.
  4. make asdf-based contribs more friendly to :FORCE T

    jsnell committed Jun 18, 2007
            * 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.
  5. Don't instrument the internal flets from the PROGV expansion

    jsnell committed Jun 18, 2007
            * 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
Commits on Jun 15, 2007
  1. small fixes

    nikodemus committed Jun 15, 2007
     * 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.
Commits on Jun 11, 2007
  1. better standard-specializer-p implementation

    csrhodes committed Jun 11, 2007
    	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.
  2. fix compilation speed regression from DATA-VECTOR-REF-WITH-…

    jsnell committed Jun 11, 2007
    	* 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.
  3. make WITHOUT-INTERRUPTS non-consing

    jsnell committed Jun 11, 2007
    	* 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.
Commits on Jun 10, 2007
  1. handle unbound markers (from BIND-SENTINEL) in unbind_to_here

    jsnell committed Jun 10, 2007
    	* 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
Commits on Jun 9, 2007
  1. optimized bignum printing

    nikodemus committed Jun 9, 2007
     * 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.
  2. missed tests from

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

    nikodemus committed 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.
  2. thread and interrupt safe ADD/REMOVE-METHOD

    nikodemus committed Jun 8, 2007
     * 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.
  3. thread safety test for the CLOS cache

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

    nikodemus committed Jun 8, 2007
     * 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.
  5. AVER that the GF lock is held during SET-DFUN

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

    nikodemus committed Jun 8, 2007
     * 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.
  7. printing of layoutless structures

    nikodemus committed Jun 8, 2007
     * 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.
Commits on Jun 6, 2007
  1. use proper types for STRING-DISPATCH

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

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

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

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

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