Commits on Jun 29, 2008
Commits on Jun 24, 2008
  1. more string trimming fixes

    nikodemus committed Jun 24, 2008
     * Return value in the no-op case for non-simple-strings must not be
       the underlying simple string object.
     * Correct return type (per spec) for STRING-TRIM &co is
       STRING-DESIGNATOR, but as long as we take care, we can make it
       STRING -- but the old SIMPLE-STRING is still wrong.
     * Instead of making WITH-STRING a full-blown Evil Macro, just use
       WITH-ARRAY-DATA at the call site.
     * Two more test-cases.
       patch by James Knight.
Commits on Jun 23, 2008
  1. Implement setsid, mlockall and mlockall in sb-posix

    jsnell committed Jun 23, 2008
            * Also refactor some code
            * Patch by Travis Cross
Commits on Jun 17, 2008
  1. fix build on SIG_INTERRUPT_THREAD-less platforms

    nikodemus committed Jun 17, 2008
     * Patch by Josh Elsasser.
  2. fix linkage-table address->symbol lookup

    csrhodes committed Jun 17, 2008
    	(from Andy Hefner sbcl-devel 2008-06-11)
Commits on Jun 16, 2008
  1. better indenting of compiler diagnostic messages.

    csrhodes committed Jun 16, 2008
    	(from Michael Weber sbcl-devel 2008-06-12)
  2. better pprinting of DEFPACKAGE forms.

    csrhodes committed Jun 16, 2008
    	From Michael Weber (sbcl-devel 2008-06-12)
Commits on Jun 15, 2008
  1. Bug fixes: cross-compiler's lookup of constants, recursive…

    pkhuong committed Jun 15, 2008
    … escaping
     * Reinstate :CONSTANT-VALUE in the infodb as :XC-CONSTANT-VALUE
       during cross-compilation, since we can't override our host's
       standard constants.
     * Avoid recursive escaping in BLOCK-GENSYM.
  2. Fix bug: READ-LINE did not return T for the last line of A…

    Alexey Dejneka
    Alexey Dejneka committed Jun 15, 2008
               Reported by Yoshinori Tahara.
Commits on Jun 11, 2008
  1. fix PRINT-OBJECT cache

    csrhodes committed Jun 11, 2008
    	We mustn't compute the cached cache too early, otherwise we'll
    	cache effective methods before the actual methods (on RESTART
    	and the two storage-condition classes) are defined.
Commits on Jun 9, 2008

    csrhodes committed Jun 9, 2008
    	The basic idea here is reducing the number of functions whose
    	discriminating function and effective method cache are
    	precomputed; in particular, to reduce the number where users can
    	both legitimately define their own methods, and where a large
    	number of methods will be applicable to different classes.
    	The biggest culprit in both of those categories is the
    	PRINT-OBJECT generic function, which would recompute its entire
    	dispatch structure every time any method was added or removed.
    	So, turn off precomputation for names in the CL package; deal
    	with the bootstrap metacircles that that provokes; special-case
    	always print certain critical pieces of infrastructure;
    	also, warn the user if they break our assumptions in
    	PRINT-OBJECT's specialization.
    	Fix one broken "how did it ever work" test.
Commits on Jun 6, 2008
  1. more constant cleverness

    nikodemus committed Jun 6, 2008
     * Make MAYBE-EMIT-MAKE-LOAD-FORM can dump _all_ references to
       non-trivial named constants using the name (well, not FP constants
       for SBCL itself.)
       This means that after (DEFCONSTANT +FOO+ "FOO") all references to
       +FOO+ are EQ, even in different files.
       ...some people are going to use this as an unportable performance
       hack, and their code will break horribly sooner or later, but more
       importantly we need to grovel less things, and more sharing means
       less memory use and better cache behaviour.
     * Tests.

    nikodemus committed Jun 6, 2008
     * Package mismatch: ANSI-STREAM-FILE-POSITION was not exported from
Commits on Jun 5, 2008
  1. fix build

    nikodemus committed Jun 5, 2008
     * I'll adviced last minute deletion of LIST-TO-HASH-TABLE-THRESHOLD:
       it was also used by the fopcompiler: use XSET there as well,
       and bump up the corresponding threshold in XSET a bit.
  2. fix bug in the newfangled constant dumping scheme

    nikodemus committed Jun 5, 2008
     * When MAYBE-EMIT-MAKE-LOAD-FORMS elects to use the name to dump
       something, it better use the name to refer to the _whole_ object,
       and not just a subpart...
     * Use XSET for niceness in there as well. ...but XSET should really
       be replaced by a sane tree-based version...
     * Test-case by Kevin Reid.
  3. delete aborted fasls in _all_ cases

    nikodemus committed Jun 5, 2008
     * Unwinding from the compiler with a non-compiler error used to
       leave the fasl lying around.
     * Reported by Attila Lendvai.
Commits on Jun 4, 2008
  1. Fix regression in LOAD

    Richard M Kreuter
    Richard M Kreuter committed Jun 4, 2008
    * Between 1.0.16 and 1.0.17 LOAD began to return NIL when the argument
      had a non-NIL type and didn't name a file.  Fixed with tests.
    * Additionally, writing the tests exposed an odd type restriction:
      LOAD's IF-DOES-NOT-EXIST argument was declared as having type
      (MEMBER :ERROR :CREATE NIL), but the CLHS just says it's a
      generalized boolean.
  2. allow dumping of references to arbitrary named constants

    nikodemus committed Jun 4, 2008
     * While ANSI does not require us to do this, supporting this allows
       users to write code like:
         (unless (boundp 'f) (defconstant f (lambda () 'foo!)))
         (defun foo () f)
       ...which pre SBCL also allowed.
  3. refactor handling of constants in the compiler

    nikodemus committed Jun 4, 2008
     * 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.
Commits on Jun 3, 2008
  1. respect displacement indices when trimming strings (regres…

    nikodemus committed Jun 3, 2008
     * Revealed by ansi-tests.
  2. respect fill-pointers when trimming strings (regression 1.…

    nikodemus committed Jun 3, 2008
     * Revealed by ansi-tests.
  3. LIST-FILL* return value (regression

    nikodemus committed Jun 3, 2008
     * Revealed by ansi-tests.
  4. NIL is a legal function name (regression

    nikodemus committed Jun 3, 2008
     * Revealed by ansi-tests.
Commits on Jun 2, 2008
  1. fix interpreted structure constructors (regression since 1…

    nikodemus committed Jun 2, 2008
     * Add full definition for %MAKE-STRUCTURE-INSTANCE.
     * Test-case.
  2. handlers with non-required arguments (regression

    nikodemus committed Jun 2, 2008
     * DX-FLET doesn't currently handle non-required arguments, so don't
       use it when there are any.
     * Test-case.
  3. Add a conservative GC workaround to string-output-streams

    jsnell committed Jun 2, 2008
            * 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.
  4. Stop using EAI_NODATA

    jsnell committed Jun 2, 2008
            * 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.
  5. Clean up after sb-cover tests

    jsnell committed Jun 2, 2008
            * 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.
Commits on May 31, 2008
  1. slightly better LIST*

    nikodemus committed May 31, 2008
     * 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.
Commits on May 30, 2008
  1. grab-bag of SB-SPROF enhancements

    nikodemus committed May 30, 2008
     * 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.
  2. win32 build fix

    nikodemus committed May 30, 2008
     * signals on win32. Hopefully it now works.
  3. unithread build fix

    nikodemus committed May 30, 2008
     * Use thread_sigmask, not pthread_sigmask.
  4. correct stack alignment for alloc() calls on Darwin/x86

    nikodemus committed May 30, 2008
     * 16 bytes at the point of call, not 16 bytes at some random-point-
  5. grab-bag of PCL hackery

    nikodemus committed May 30, 2008
     * 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.