sbcl Log

Commit Date  
[6a4ea9] (sbcl_1_0_6) by William Harold Newman William Harold Newman

1.0.6: release, will be tagged as sbcl_1_0_6

2007-05-27 01:13:28 Tree
[fd324a] by Nikodemus Siivola Nikodemus Siivola conditionally re-enable interrupts interrupting current thread

* New variable: *IN-INTERRUPTION* is true IFF we're being called inside
*IN-INTERRUPTION* and there are no intervening WITHOUT-INTERRUPTS.

* INTERRUPT-THREAD calls the interrupt function inside WITH-INTERRUPTS
when interrupting the current thread IFF *IN-INTERRUPTION* is true.

* Remove bogus FIXME by yours truly from INVOKE-INTERRUPTION and
properly explain what is going on -- and add another FIXME in its

This makes nested SIGINTs DTRT.

2007-05-20 12:34:29 Tree
[e90d27] by Nikodemus Siivola Nikodemus Siivola interrupt safe REFILL-BUFFER/FD

* Check for blocking / wait for new input before touching the stream.

* Check that the SAP is still there after the wait, in case an interrupt
handler or an FD handler closed the stream from under us.

* Wrap the main action in WITHOUT-INTERRUPTS to prevent asynch unwinds
from leaving the stream in an inconsistent state. (Since the read
is going to be non-blocking it should be over soon enough.)

* Arrange to signal errors outside the WITHOUT-INTERRUPTS.

2007-05-20 11:34:59 Tree
[865b14] by Nathan Froyd Nathan Froyd fix thinko in src/code/array.lisp

* thanks to Eric Marsden

2007-05-19 12:01:02 Tree
[9105a2] by Nathan Froyd Nathan Froyd cleanup LOAD-TYPE macros

* when the LOAD-TYPE macros in the various backends hardcoded '3',
they really meant (1- N-WORD-BYTES)--a little reflection on
widetags, lowtags, and endian orderings should make this clear
(we don't have a 64-bit big-endian port to drive it home, though);
* catch the spread of magic constants in code/array.lisp.

2007-05-19 02:14:05 Tree
[dd5b34] by Nathan Froyd Nathan Froyd fix #!-sb-unicode build problems on x86-64

* just a few uncopied things from the x86 version...

2007-05-19 01:50:17 Tree
[f94339] by Nikodemus Siivola Nikodemus Siivola fixed mixed up commit


* Missing tests.

* Whitespace.

* jugglery

This path breaks on x86/Darwin even without
touching it, indicative of still lingering Darwin issues. Any
number of changes can mask this breakage: adding SAFE- prefix to
pass again, but so is adding a sneaky --eval nil in there as well
-- among other things.

Pain. Hate. Pain. See commentary in

This time the issue doesn't seem to be foreign stack alignment
related, though: forcing the compiler to use the fast call-out path
always doesn't make the "small" case pass.

2007-05-17 20:00:31 Tree
[8cd045] by Nikodemus Siivola Nikodemus Siivola some compare-and-swap changes

* Since we have a non-threaded %INSTANCE-COMPARE-AND-SWAP on all
non-threaded builds as well.

* Bounds checking SIMPLE-VECTOR-COMPARE-AND-SWAP, plus tests.

2007-05-17 16:44:52 Tree
[b5c69c] by Nikodemus Siivola Nikodemus Siivola interrupt & GC & PA handling

* On all FOREIGN_FUNCTION_CALL_FLAG platforms arch_pseudo_atomic_atomic is
always accompanied by !foreign_function_call_active.

For clarity move checking it to the a_p_a_a definitions on platforms that
need it.

TEST ALERT: This touches all the non-x86oid platforms, but I have
not been able to test on them -- so a thinko/typo build-breakage is
not impossible.

* If we somehow ended up in interrupt_handle_pending in the middle of a PA
section we might GC in the middle of it, or lose PA interrupted flags.

Now we punt straight up if we get there in the middle of PA.

* If we handled a pending interrupt outside GC-INHIBIT, but inside a PA
section, with both GC_PENDING and SIG_STOP_FOR_GC_PENDING was true, we
would be left running with GC_PENDING cleared without actually taking any

The previous item actually fixes this, but for clarity make
sig_stop_for_gc_handler clear the GC_PENDING and SIG_STOP_FOR_GC_PENDING
iff it actually stops the thread.

* The single UWP implementation for WITHOUT-GCING was incorrect: if
we had a GC but no interrupts pending when checking for pending
interrupts and GCs, and caught an asynch unwind at that point we
could be left running with the GC pending (and/or related signals

Due to the increased cost of WITHOUT-GCING, check first if GC is
already disabled before taking the UWP code path.

2007-05-15 14:14:33 Tree
[2e498c] by Nikodemus Siivola Nikodemus Siivola Git friendly

* Ignore .git.

2007-05-15 12:27:59 Tree
[46d8e0] by Christophe Rhodes Christophe Rhodes cacheability of EMFs from methods with non-standard specializers
... the second return value from
first return value can be cached. It doesn't promise that an
arbitrary computation on the specializers will work, so we need
not to go down that codepath.
... so refuse to build dispatch discriminating functions if any
method of the generic function has a non-standard
(non-PCL-native) specializer, as operations such as
will fail on such specializers
... rework SPECIALIZER-CLASS-OR-NIL to call the new function
... test case.

2007-05-11 11:55:42 Tree
[b1a1d1] by Christophe Rhodes Christophe Rhodes improve handling of non-standard subclasses of SB-MOP:SPECIALIZER
and adjust RAISE-METATYPE to handle NIL return values.
... add commentary around RAISE-METATYPE to explain what all the
metatypes actually mean.
and further drew fine distinctions where there were none...
instead. (But leave in the GC safety bug reported sbcl-devel
for CLASS-EQ specializers on built-in-classes.

2007-05-10 16:00:54 Tree
[11d639] by Christophe Rhodes Christophe Rhodes metatypes-related refactor
Many of the dlisp functions took (metatypes applyp) arguments,
when in fact all they were using was the length of the metatypes
argument and the applyp boolean. Make this explicit, to assist
in understanding when the identity of metatypes actually

2007-05-10 11:29:10 Tree
[e561da] by Juho Snellman Juho Snellman fix reading of a suppressed #. in sb-cover

* Suppressing of #. in the source location recording read-table was
implemented incorrectly. (Reported by James Knight)
* Don't silently ignore read errors.
* Use a dummy source location map for top level forms for which
an error was signaled, rather than NIL. Otherwise the compiler's
and sb-cover's tlf numbering could get out of sync.

2007-05-09 00:36:49 Tree
[01da8d] by NIIMI Satoshi NIIMI Satoshi change memory layout on FreeBSD

* Move read-only-space and neighbours to lower space to avoid
potential conflicts with runtime user space.

* Move dynamic-space to higher space so that kern.maxdsiz can be
increased at least 1GB.

Brief memory layout of FreeBSD:

+------------+ -- 0x00000000
| free |
+------------+ -- 0x08000000
| user space |
+------------+ -- brk (grows downward)
~ ~
+------------+ -- 0x28000000 (0x08000000 + maxdsiz)
| mmap,shlib |
~ ~
+----------- + -- stack top (grows upward)
| stack space|
+------------+ -- 0xC0000000
| kernel |
+------------+ -- 0xFFFFFFFF

2007-05-08 10:44:01 Tree
[5c41b6] by Nathan Froyd Nathan Froyd fix (setf aref) on single-float vectors

Obvious patch by Christophe, reported by Eric Marsden.

2007-05-07 14:03:42 Tree
[906ecd] by Nathan Froyd Nathan Froyd

10.CVS: ----------------------------------------------------------------------

2007-05-07 00:42:37 Tree
[8cb20e] by Juho Snellman Juho Snellman probably fix win32 build

* sb!unix::micro-seconds-per-internal-time-unit was defined in a
#-win32 block
* Reported by Yaroslav Kavenchuk

2007-05-06 22:19:14 Tree
[355e6c] by Juho Snellman Juho Snellman sb-sprof call counting

* Add support for deterministically tracking the amount of times
that certain functions were called during a sb-sprof profiling
* The goal is to allow people to easily see whether a lot of time
is spent in function X due to it being called often, or due to
the average call being slow.
* The benefit over using sb-profile is that a) the reporting
of the call counts is integrated into the normal sb-sprof
interface and b) there's a lot less overhead, since we're just
counting calls, not tracking cpu usage / consing.

2007-05-06 21:48:06 Tree
[d7fa6c] by Nikodemus Siivola Nikodemus Siivola PCL cache-lookup code emission refactoring

* Pass cache-variable name explicitly to EMIT-DLAP.

* Use a gensym for the miss-tag.

* Factor cache lookup code emission to a separate function EMIT-CACHE-LOOKUP.

2007-05-06 21:43:55 Tree
[54c620] by Nikodemus Siivola Nikodemus Siivola cleanup a small thinko from previous x86-assem.S refactoring

* EBP is available to use in ALLOC, so use it.

2007-05-06 21:21:42 Tree
[e4fab3] by Nikodemus Siivola Nikodemus Siivola x86 allocation cleanup

* Ensure stack alignmenment on calls to alloc() on Darwin.

* Ensure that DF is cleared on calls to alloc().

* Preprocessorize the alloc_foo definitions.

2007-05-06 20:50:10 Tree
[a6c61b] by Nikodemus Siivola Nikodemus Siivola stack alignment on x86/Darwin, once more

* Stack alignment cannot be changed after arguments have been pushed
on stack: ALLOCATE-NUMBER-STACK-SPACE is the place to do this, and
nowhere else.

* Use the RESET-STACK-POINTER logic on all x86 platforms for

* Factor out the alignment logic to ALIGN-STACK-POINTER.

* Clear DF unconditionally when calling out, which means that Solaris
doesn't need to switch it back and forth. (Darwin, Solaris, and Win32
all need DF cleared for call-out.)

2007-05-06 17:56:27 Tree
[7effaa] by Nathan Froyd Nathan Froyd faster STRING-TO-OCTETS for unibyte and UTF-8 encodings

* redo DEFINE-UNIBYTE-MAPPER to use a lookup table instead of
a big CASE statement (optimizes for the common (?) case of
mostly ASCII characters and gives smaller code);
* STRING->LATIN% now optimistically assumes that there are
no encoding errors in the string and allocates an
appropriately-sized octet vector upfront, falling back to
the slower path if an encoding error is detected;
* do more or less the same thing for UTF-8 encoding, except
that there is no slow path (since UTF-8 can encode all
characters, unlike unibyte encodings)
* we have a ton of external formats; use a hash table for
*EXTERNAL-FORMAT-FUNCTIONS* rather than a list to cut down
on lookup time (this alone is worth ~10% without the other
optimizations above...).

Code cleanups:

* use string package names like every other source file;
* properly separate function names from arglists;
* don't pass END parameters when we don't use them.

End result is ~20-30x speedup for unibyte encodings (depending
on the encoding--LATIN-1 is ~20x, whereas something like CP857
is ~30x) when encoding ASCII strings; smaller but still
significant speedups when encoding non-ASCII strings. UTF-8
encoding is ~5-6x faster, which also means that we're faster
than TRIVIAL-UTF-8 for encoding now (decoding is an entirely
different matter).

2007-05-06 02:28:42 Tree
[648392] by Nikodemus Siivola Nikodemus Siivola fix botched commit partial fix for DISASSEMBLE buglet

* Test for >= length, not > length.

* Record the remaining WARNING in BUGS.

2007-05-05 10:36:00 Tree
Older >