sbcl Log

Commit Date  
[9ff18d] (sbcl-1.1.10) by Christophe Rhodes Christophe Rhodes

1.1.10: will be tagged as "sbcl-1.1.10"

2013-07-28 14:14:11 Tree
[dacd3f] by Paul Khuong Paul Khuong

Modular integer %NEGATE on x86oids

Forms like (logand (- word) word) now compute the negation in modular
arithmetic, without consing an intermediate bignum, just like integer
addition, multiplication and subtraction.

The VOPs are trivial, and should be easily added on all other
platforms, I just don't have access to build hosts.

2013-07-18 21:04:13 Tree
[ba39d1] by Paul Khuong Paul Khuong

Pack (mostly) stack TNs according to lexical scope information

Packing TNs from shallow scopes before more deeply nested one
is a perfect elimination order when the live ranges span the
full scope (the interference graph is a comparability graph).
Use that as a heuristic, and do that for TNs that are known
to have such simple live ranges before the rest: this ensures
that bad TNs don't mess everything up.

The result is much tighter stack allocation (most of the effect
comes from initialising stack frames at a smaller size, and growing
less aggressively), and fewer long-lived stray references.

Incidentally: fix catch block packing on win32, solving lp#1072739

2013-07-18 21:02:28 Tree
[a21899] by Paul Khuong Paul Khuong

Grow regalloc datastructures geometrically for unbounded SCs

2013-07-18 20:17:30 Tree
[3b98d3] by Paul Khuong Paul Khuong

Smaller stack frames on x86oids

Start at 4 slots (for some reason, it seems that 3 isn't really
the minimum, and grows by one slot at a time.

2013-07-18 20:17:30 Tree
[44fa19] by Paul Khuong Paul Khuong

Disentangle storage base initial size from growth increments

Before, an initial stack frame size of 8 meant that the stack frame
always grew in increments of 8. Not only is a large initial size bad
for GC (it leaves more dead references untouched), but a large increment
is even worse.

2013-07-18 20:17:30 Tree
[df2d63] by Paul Khuong Paul Khuong

Insert explicit cut to width when needed

When modular arithmetic operations are replaced with specialised
modular variants, the result's bitwidth is determined by the variant,
and might be wider than expected. If necessary, insert an explicit
cut to the exact bitwidth before returning a value in a non-modular

Spotted by pfdietz's random tester.

Fixes lp#1199428.

2013-07-18 19:43:24 Tree
[be3993] by Paul Khuong Paul Khuong

Avoid uselessly re-scanning modular arithmetic expressions

When modular arithmetic transforms have already fired for a
subexpression, and that subexpression's width is at most as wide
as the bitwidth we're cutting to, there is no need to re-traverse
the subexpression.

There was already some code to detect that case. Make it more general,
and, more importantly, sound.

2013-07-18 19:43:24 Tree
[e24061] by Paul Khuong Paul Khuong

No more destructive MERGE of shared data in best-modular-version

The old code worked by accident: few/no platform implements
untagged signed modular arithmetic VOPs.

The new code handles that common case to avoid consing a fresh list
when the MERGE will be an identity.

2013-07-18 19:43:24 Tree
[953e29] by Stas Boukarev Stas Boukarev

Optimize TYPEP of (MOD X) on x86/x86-64.

Optimize type-tests in the same vein as type-checks previously, and
implement type-checks by means of type-tests. Further optimize it by
avoiding doing fixnum tests on known fixnums and boxing of
signed/unsigned numbers.

2013-07-16 01:12:51 Tree
[220651] by Paul Khuong Paul Khuong

Handle unbounded integer types in INTEGER-TYPE-NUMERIC-BOUNDS

If any of the integer type in the union lack upper or lower bounds,
immediately abort with unknown bounds (rather than taking the MIN
of NIL and an integer).

Thanks to pfdietz for his random testing.

Fixes lp#1199127.

2013-07-08 23:45:37 Tree
[8fb553] by Lutz Euler Lutz Euler

Add a regression test for lp#1194673.

2013-07-07 13:06:47 Tree
[e877a2] by Christophe Rhodes Christophe Rhodes

restore CLISP cross-compilability

s is the marker for short-float, not single-float. Use f instead.

2013-07-05 16:25:18 Tree
[b4fa25] by Stas Boukarev Stas Boukarev

Update ASDF to 3.0.2.

2013-07-04 09:58:54 Tree
[a20451] (sbcl-1.1.9) by Christophe Rhodes Christophe Rhodes

1.1.9: will be tagged as "sbcl-1.1.9"

2013-07-04 08:29:48 Tree
[43df38] by Christophe Rhodes Christophe Rhodes

fix typo in FFI chapter

noted by Michael Crouch (lp#1197129)

2013-07-03 09:26:01 Tree
[fd2101] by Paul Khuong Paul Khuong

Revert to binding *package* in bootstrappy code

I see no sane way to use sb!ext:print-symbol-with-prefix or
sb-ext:... in ~//. Bind *package* to :keyword instead, for
undefined function conditions.

Reported by adeth on #lisp.

2013-06-29 23:57:25 Tree
[616e16] by James M. Lawrence James M. Lawrence , pushed by Stas Boukarev Stas Boukarev

Fix SLEEP on 32-bit platforms.

2013-06-28 13:59:53 Tree
[622b19] by Paul Khuong Paul Khuong

Fix a typo in the block comment on encoding/decoding universal times

Might as well, while we're updating URLs.

Spotted by Luis Oliveira.

2013-06-28 13:08:11 Tree
[d8665c] by Paul Khuong Paul Khuong

s/32/n-word-bits/ in bignum-index

For some reason we missed that during all the work on x86-64. Then
again, our static inference is good enough that no runtime check
seem to be left to detect that the declaration is wrong.

2013-06-28 06:14:04 Tree
[8fee78] by Paul Khuong Paul Khuong

Store FP values from x87 to the heap outside pseudo-atomic

It suffices to get the header right, and that way we avoid signaling
FPEs in PA, when, as is bound to happen, a value is only truncated
when it's boxed.

2013-06-28 06:01:06 Tree
[74cf7a] by Paul Khuong Paul Khuong

double->single float conversion isn't a no-op on x87 anymore

The conversion can result in overflow, so pass through a stack
temporary to force a truncation.

Test case by Peter Keller on sbcl-devel, 2013-06-26.

2013-06-28 05:45:49 Tree
[1656e5] by Paul Khuong Paul Khuong

New contrib: SB-GMP

This contrib was developed by Stephan Frank to replace some of our
bignum and rational arithmetic code with calls to libgmp. Simply
loading the contrib will transparently accelerate arithmetic on
large rationals when libgmp is available; if libgmp cannot be found,
the contrib should change nothing.

The contrib also wraps additional functions in GNU MP, so that they
accept and return SBCL-native integers or ratios. See GNU MP's manual
for more information.

2013-06-28 04:18:16 Tree
[d30da1] by Paul Khuong Paul Khuong

Defer some sanity checks to after testing for value refence to inline functions

The functional corresponding to an inline function can be marked as dead when
there remains references in for-value contexts. Detect such references before
making sure the function is still live.

Reported with a reduced test case by Teemu Likonen to sbcl-devel on 2013-06-24.

2013-06-28 04:18:16 Tree
[b88467] by Jan Moringen Jan Moringen , pushed by Paul Khuong Paul Khuong


Otherwise MAKE-THREAD could be interrupted after having
locked *MAKE-THREAD-LOCK*. If the interrupting code also called
MAKE-THREAD, a recursive lock attempt for *MAKE-THREAD-LOCK* would

The problem could be easily triggered by

(MAKE-TIMER ... :THREAD <T or a thread>)

Also move let bindings of SETUP-SEM, REAL-FUNCTION, ARGUMENTS and
INITIAL-FUNCTION and the NOT *GC-INHIBIT* assertion out of the
critical section.

Tests have been added in threads.pure.lisp and timer.impure.lisp.

fixes lp#1180102.

2013-06-28 04:18:16 Tree
Older >