Work at SourceForge, help us to make it a better place! We have an immediate need for a Support Technician in our San Francisco or Denver office.


sbcl Log

Commit Date  
[f9e2eb] (sbcl_1_0_8) by William Harold Newman William Harold Newman

1.0.8: release, will be tagged as sbcl_1_0_8

2007-07-25 13:39:33 Tree
[52cbc0] by Thiemo Seufer Thiemo Seufer Fix typo in comment.

2007-07-23 20:29:55 Tree
[a18fd8] by Thiemo Seufer Thiemo Seufer Fix the MIPS single-stepper break instruction.

2007-07-23 20:26:38 Tree
[d29478] by Nikodemus Siivola Nikodemus Siivola fix non-x86oid builds

needed, as SB-VM uses SB-SYS.

(Tested on only PPC/Darwin.)

2007-07-21 13:33:53 Tree
[81e608] by Nikodemus Siivola Nikodemus Siivola FIND-SLOT-DEFINITION to return NIL when called with non-slot-classes

* Add a default method to CLASS-SLOT-VECTOR that returns #(NIL), restoring
the pre- behaviour of calling SLOT-MISSING when trying to access
slots in non-SLOT-CLASS instances.

* Add a slightly dubious test-case.

2007-07-21 01:55:42 Tree
[95a76d] by Nikodemus Siivola Nikodemus Siivola SLOT-VALUE and SET-SLOT-VALUE transforms aren't important

* No compiler notes for default policy.

* Test case.

2007-07-21 00:05:15 Tree
[d4624e] by Nikodemus Siivola Nikodemus Siivola adjust lexenv frobbing in TRANSFORM-CALL to happen earlier

* Need to replace the call lexenv with the frobbed one before
gets a consistent *LEXENV* binding.

(This has been around since, but since it only affects
known functions with optional arguments and transformations it
suddenly become a lot more easy to hit with the new MEMBER and
ASSOC transforms.)

* Test case.

2007-07-20 23:43:21 Tree
[0d442a] by Nikodemus Siivola Nikodemus Siivola better handling of ASSOC and MEMBER on empty lists

* If the second argument is a constant NIL, remove the whole
call in the transform and just return NIL.

2007-07-19 18:49:44 Tree
[a48b0a] by Nikodemus Siivola Nikodemus Siivola updated TODO file

Let the controversy begin.

No code changes.

2007-07-19 14:16:40 Tree
[3d6751] by Nikodemus Siivola Nikodemus Siivola paper over bug inlining known functions in high-debug code


* Don't inline known functions unless let-conversion is enabled, which papers
over the real bug -- apparently due to BIND/UNBIND-SENTINEL vop insertion.

2007-07-19 13:44:58 Tree
[ad6345] by Nikodemus Siivola Nikodemus Siivola be more paranoid about saps

* Since compiler transformations can introduce closures and hence
cause "this is obviously always on stack or in register" intuition
to be wrong, be more vigilant about pinning objects before

* Also convert a couple of WITHOUT-GCINGs to WITH-PINNED-OBJECTS

2007-07-19 12:58:59 Tree
[423d7e] by Nikodemus Siivola Nikodemus Siivola better ASSOC transform

* Extend the new MEMBER optimizations to handle ASSOC as well, and define
the corresponding %ASSOC[-KEY][-TEST][-NOT] functions as well.

* Clean up the old ASSOC -> ASSQ and MEMBER -> MEMQ transforms that
aren't firing anymore.

* Tests.

2007-07-19 10:28:14 Tree
[6fa7b9] by Nikodemus Siivola Nikodemus Siivola compiler being nicer to the compiler

* In MAKE-XEP-LAMBDA-EXPRESSION, use EQL instead of = and NOT <
instead of >= to avoid additional rounds of deftransforms and

* Add a source transform for %COERCE-CALLABLE-TO-FUN to pick of
simple cases, also avoid inserting additional lambdas to the code.

providing not just faster compilation, but also making (MAPCAR F
...) faster by lifting the %C-C-T-F out of the loop.

This work was based on Juho's observation that a major source of
compiler slowness are all the lambdas generated by transforms: not
that this changes the big picture in any way -- just shaves a few
corners. If you wish to get a gut feeling of what is going on, stick

2007-07-17 22:26:30 Tree
[da3049] by Nikodemus Siivola Nikodemus Siivola SLOT-CLASS cleanups

* No need for two separate implementations of FIND-SLOT-DEFINITION -- just
move the one we care about to slots-boot.lisp along with MAKE-SLOT-VECTOR
(which it is intimately tied up with.) Add comments for posterity.

* There should be no (SETF CLASS-SLOTS) or (SETF CLASS-DIRECT-SLOTS), so

2007-07-17 20:50:15 Tree
[0ee113] by Nikodemus Siivola Nikodemus Siivola asymptotically faster FIND-SLOT-DEFINITION

* Add a SLOT-VECTOR slot the SLOT-CLASS. The SLOT-VECTOR contains
plists of slot definition objects hashed on the slot name, allowing
O(1) lookups based on the slot name, instead of the old O(N)
lookups -- where N is the number of slots in a class.

Makes everything requiring slot definition lookups faster, simple
tests showing SLOT-VALUE with variable name on a 5-slot class to be
roughly 50% faster.

2007-07-17 18:36:33 Tree
[1ac7e7] by Nikodemus Siivola Nikodemus Siivola better MEMBER transform

* Specialized versions for different keyword combinations: %MEMBER,
%MEMBER-TEST, %MEMBER-KEY-TEST, etc. These versions have positional
arguments, and the callable arguments are known to be functions.

* The transform open codes for all combinations of keywords if the
second argument is constant and (>= SPEED SPACE). Otherwise the
transform selects the appropriate specialized version and open
codes %COERCE-CALLABLE-TO-FUN around keyword arguments, allowing
type inference to optimize it away for arguments known to be

* Tests.

2007-07-17 13:18:06 Tree
[76e5cc] by Christophe Rhodes Christophe Rhodes Fix CALL-NEXT-METHOD / EVAL-WHEN interaction
Reported by Sascha Wilde sbcl-devel 2007-07-15. This fix is not
the one that I sent to sbcl-devel 2007-07-16, because that's
just too horrible; instead we expand DEFMETHOD into separate
:LOAD-TOPLEVEL and :EXECUTE branches. (This needs a minor test

2007-07-17 11:24:26 Tree
[e6cf9d] by Nikodemus Siivola Nikodemus Siivola delete a large block of commented-out code from seqtran.lisp

* This is why we have version control. (But add a comment pointing out
that this code exists, so that people know where to look for it.)

The code that is deleted here contains the apparent beginnings of a
better sequence transform infrastructure: a compiler representation
of an iteration over a sequence.

2007-07-17 10:13:38 Tree
[038ecd] by Nikodemus Siivola Nikodemus Siivola (SETF SYMBOL-PLIST) type checking

* Disallow non-lists as the new value.

2007-07-16 16:52:52 Tree
[6a62de] by Nikodemus Siivola Nikodemus Siivola threaded SET & BIND VOP touchups

* In SET: don't check versus TLS-INDEX == 0: TLS-INDEX 0 already
gives the NO-TLS-VALUE-MARKER. Smaller code, and common case seems
to be assignment to a bound variable.

* In BIND: use one register less, splitting the duties of the old
TEMP between TLS-INDEX and EAX/RAX. Increment the *FREE-TLS-INDEX*
directly in memory.

2007-07-16 16:12:18 Tree
[09526a] by Nikodemus Siivola Nikodemus Siivola note for SBCL packagers


2007-07-16 11:07:37 Tree
[bfb19d] by Nikodemus Siivola Nikodemus Siivola SB-EXT:COMPARE-AND-SWAP

* New macro SB-EXT:COMPARE-AND-SWAP provides a supported interface to
compare-and-swap functionality.

* New info-type :FUNCTION :STRUCTURE-ACCESSOR allows us to map from
defstruct slot-accessor names to defstruct descriptions.

* Add :CAS-TRANS slot keyword to DEFINE-PRIMITIVE object, and the
compiler machinery needed to support compare and swap on primitive
object slots.



* Use a consistent %COMPARE-AND-SWAP-FOO naming scheme for CAS

* Tests.

Tested on x86/Linux & x86/Darwin, x86-64/Darwi, and PPC/Darwin.

2007-07-15 22:28:12 Tree
[f34fee] by Nikodemus Siivola Nikodemus Siivola automagic debugging-friendly gensyms

* New function: SB-INT:BLOCK-GENSYM, which appends the innermost
enclosing non-NIL block name to the given stem. The default
environment used is the current *LEXENV* if one exists.


2007-07-13 18:57:23 Tree
[a3e88e] by Nikodemus Siivola Nikodemus Siivola SLOT-VALUE and SET-SLOT-VALUE transforms (really

This is the real commit message that was supposed to go in

* Define SLOT-VALUE and SET-SLOT-VALUE as known functions.

their compiler-macros.

* Add transforms for SLOT-VALUE and SET-SLOT-VALUE in addition to the
compiler-macros. The transforms are functionally equivalent to the
compiler-macros, but catch more cases: eg.

(define-modify-macro appendf (&rest lists) append)
(appendf (slot-value x 'y) z)

needs the deftransforms as setf-expansion replaces the constant
argument with a gensym.

Keep the compiler-macros around, since they catch the common cases
early and don't mess up the build: the transforms are agressive
enough that we can't enable them until the PCL boot-state is
complete. (The compiler-macros are also slightly cheaper, since
each transform introduces a new lambda.)

2007-07-12 23:05:17 Tree
[a55628] by Nikodemus Siivola Nikodemus Siivola thread-safe INTERN, EXPORT, &co

* Modifications to packages grab a global lock. INTERN is the only
real potential performance bottleneck here, but as long as the
symbol already exists it doesn't need to get the lock.

We need a global lock instead of a per-package lock because eg.
(EXPORT 'FOO::BAR :FOO) and (INTERN "BAR" :ZOT) can conflict, even
though they operate on different packages.

Since races should be rare we use a spinlock to avoid making a
system call for every release.

Interrupt safety? Probably no. It's likely that you can wedge the
package system into a bad state if you really try.

2007-07-12 17:28:40 Tree
Older >