Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo


sbcl Log

Commit Date  
[f90266] by nyef nyef , pushed by Alastair Bridgewater Alastair Bridgewater

.gitignore: Add src/runtime/sparc-funcdef.h

* Just another auto-generated file for a rarely-maintained

2012-10-19 18:50:50 Tree
[d3514a] by nyef nyef , pushed by Alastair Bridgewater Alastair Bridgewater


* Test ALLOCATION-INFORMATION.4 is known to be flaky at best on
GENCGC PPC, and has been observed to fail on GENCGC SPARC. Since
it's been marked :FAILS-ON for GENCGC PPC, mark it as failing for

2012-10-19 18:50:50 Tree
[ad096f] by nyef nyef , pushed by Alastair Bridgewater Alastair Bridgewater


* Tweak make-config.sh to automatically select GENCGC, and to
update the fallback message for those poor bsd-using folks.

* Copied the gencgc memory map from the SunOS version to use for
Linux (the cheneygc maps were identical, we may as well keep the

* Also tweaked the linker flags to match. Not because it was
required to build, but because I don't know why they were changed
for SunOS, and in the absence of such knowledge I'd rather keep
things more or less parallel.

2012-10-19 18:50:34 Tree
[539339] by nyef nyef

src/runtime/sparc-arch.c: Use si_addr in arch_get_bad_addr().

* Since the sparc port was first merged, arch_get_bad_addr() has
only worked when the program counter is within read-only or the
current dynamic space.

* This is fragile simply because of the existance of static
space and PURIFY. It is WORSE when you add GENCGC to the mix (to
the point where SunOS with GENCGC doesn't even call
arch_get_bad_addr() anymore).

* The existing implementation looks like it predates the switch
to sigaction(2) style signal handlers. SBCL uses si_addr on all
other backends save Alpha (long undermaintained) and HPPA (even
longer undermaintained). Clearly, this approach works on SunOS.
From testing, it works on at least linux-2.6.32. We might as well
run with it, since we need it for GENCGC anyway, and we can easily
concoct a test case that would cause a failure using CHENEYGC.

* So, implementation patterned on any of the other backends, but
leaving the old code in place, conditional-compiled out, as a bit
of a historical note / warning to future historians.

2012-10-19 17:38:05 Tree
[9e5377] by David Lichteblau David Lichteblau

Update NEWS, make-config.sh

2012-10-19 16:37:03 Tree
[7f9bcc] by David Lichteblau David Lichteblau

sb-bsd-sockets: Add a test for interruptible I/O

Test TCP sockets even without :internet-available, albeit only on
threaded builds. Check that INTERRUPT-THREAD works in a timely
fashion on threads currently blocked in I/O on a socket.

2012-10-19 16:36:44 Tree
[7572e0] by David Lichteblau David Lichteblau

Windows: Use overlapped I/O, CreateFile

Overlapped I/O is win32's asynchronous I/O mechanism, which allows
us to start an I/O operation and explicitly wait for it to finish at
a time of our choosing, such that we can simultaneously await other
events instead of blocking unconditionally.

- Support for overlapped I/O is a per-HANDLE flag specified at
file opening time, necessitating a switch to win32's CreateFile
and away from the CRT's _open.

- Wrap win32 file operations in POSIX-compatible functions, so
work as before. Under the hood, these now call our Lisp or C
functions instead of versions from CRT.

- For now, these functions still return and expect what passes as
file descriptors in CRT.

- INTERRUPT-THREAD is now capable of performing the interruption
in a target thread blocked in socket I/O, indicated using an
errno of "EINTR". Minor changes in FD streams to retry the I/O
operation explicitly in that case.

Does not yet include changes for console I/O, and instead still
falls back to _read and _write in that case. Also not yet included
is interruptible non-overlapped I/O, e.g. for unnamed pipes.

Thanks to Anton Kovalenko.

2012-10-19 16:07:24 Tree
[67f44c] by Lutz Euler Lutz Euler

Improve basic block ordering for some loops.

Currently the compiler rotates most loops to minimize branching costs,
but for some loops this actually has the opposite effect (i.e., larger
and slower code being generated), namely for those that already have the
termination test at the end.

So, inhibit loop rotation if such a loop is detected. The decision is
based upon whether the loop's back edge starts with a conditional branch
(don't rotate) or an unconditional branch (do rotate). This heuristic is
correct in simple cases but may err, e.g. if a loop has multiple back
edges. As we didn't try before and don't try now to analyse complex
loops to aid the decision whether to rotate or not, or even how far,
hopefully any differences introduced here will cancel on average with
respect to their impact on performance and code size.

(Loops consisting of only one basic block -- which necessarily have the
termination test at the end -- were (obviously) treated correctly
already. But even small loops can easily consist of multiple blocks, for
example if the loop body contains code from inlining a function call.)

2012-10-17 19:05:58 Tree
[e35a79] by Lutz Euler Lutz Euler

Typo and other small fixes in the manuals and the man page

That is, in the texinfo files of the user manual, the internals manual,
and in sbcl.1. Fix spelling and grammar errors, put sufficiently many
dots in abbreviations and consistently write "SBCL" in all caps in
prose. Also, SIGABORT should be SIGABRT.

2012-10-13 19:11:43 Tree
[d15afa] by Nikodemus Siivola Nikodemus Siivola

allow SB-CONTRIB operation without explicitly set CC

Fall back to "cc" with a style-warning.

2012-10-08 05:49:41 Tree
[c712f8] by Nikodemus Siivola Nikodemus Siivola

don't close runtime dlhandle on Darwin

On newish Darwin it works, but some people still run old enough
version that it won't work. As long as we're not explicitly checking
for "Darwin new enough?", let's try not to break...

Fixes lp#957385

2012-10-07 12:23:19 Tree
[c0569c] by Francois-Rene Rideau Francois-Rene Rideau , pushed by Nikodemus Siivola Nikodemus Siivola

make it possible to run tests on an installed SBCL

Allow override of SBCL location via TEST_SBCL_HOME,

Allow override of temporary file location via TEST_DIRECTORY. (Some
tests still write to /tmp, though -- so user beware!)

Small unrelated whitespace / style-warning fixes.

2012-10-07 12:15:25 Tree
[7374ca] by Nikodemus Siivola Nikodemus Siivola

teach NODE-CONSERVATIVE-TYPE about union types

Conservative type of STRING is STRING -- and this makes it so.

Fixes lp#1050768 (but also future-proof ARRAY-IN-BOUNDS-P against
'*) explicitly.

2012-10-07 11:48:33 Tree
[99440a] by Lutz Euler Lutz Euler

Kill a build warning about unreachable code in MAKE-SEQUENCE.

Drop the T clause in a TYPECASE testing for ATOM, CONS and T as ATOM is
specified to be (NOT CONS) which the compiler well knows.

Break some overly long lines.

2012-10-06 18:36:10 Tree
[ad2b04] by Lutz Euler Lutz Euler

Fix some tests for builds without sb-eval.

Conditionalize on #+SB-EVAL test parts that bind *EVALUATOR-MODE* to
:INTERPRET. The affected tests are:
- compiler.pure.lisp / :multiple-args-to-function
- eval.impure.lisp / (eval :empty-let-is-not-toplevel)

2012-10-06 16:56:19 Tree
[c017b8] by Nikodemus Siivola Nikodemus Siivola


* Move the first out from the latter, and put parts of the first that
belong in the latter there. They're sufficiently unrelated that
it's just confusing. Also clarify why some stuff is in W-C-V and
not W-IR1-N.

CONVERT-AND-MAYBE-COMPILE. These are our topmost entry points into
the convert & compile dance.

...and PROCESS-TOPLEVEL-LOCALLY, which needs to process
declarations. We really should separate environment handling and

* This also removes the unsightly (REMHASH NAME *FREE-FUNS*) hack
from couple of places.

* Move *SOURCE-PATHS* binding to WITH-SOURCE-PATHS (new), also
sufficiently unrelated to be confusing.

(This fixes the compiler.test.sh regression I managed to introduce.)

2012-10-06 08:37:15 Tree
[48a34b] by Nikodemus Siivola Nikodemus Siivola

use SB-EXT:EXIT in expect.sh instead of QUIT

2012-10-06 08:37:15 Tree
[0e4b15] by Nikodemus Siivola Nikodemus Siivola


(and word-wrap NEWS)

2012-10-06 08:37:15 Tree
[b35d5f] by SANO Masatoshi SANO Masatoshi , pushed by Nikodemus Siivola Nikodemus Siivola

fix GC-LOGFILE when none has been set

...and the return value from (SETF GC-LOGFILE).

2012-10-06 08:37:15 Tree
[8a7fd8] by Nikodemus Siivola Nikodemus Siivola

make walker tests happier

Our improved handling of specials in the walker broke a few tests,
investigation of which revealed a few further bogosities -- patch
over the worst of them, partially in the walker, partially by fixing
tests which expected bogus results.

LET* walking is still slightly broken when it comes to specials,
since it isn't properly recursive the way it has to be. Mark the
test as expected to fail for now -- fixing it ASAP properly.

(I must have managed to run tests in the wrong tree once again,
since I didn't catch this before the last push. Sorry!)

2012-10-06 08:37:15 Tree
[d90c8a] by Nikodemus Siivola Nikodemus Siivola

fix structure stack allocation for high-debug code

* Allow values to flow through casts in good-for-dx analysis.

* Let-convert main-entry points for already inlined optional

* Don't preserve single-use debug vars in system-lambdas, no
matter what the policy says.

* Don't add INDEFINITE-EXTENT declarations to hairy entries without
&REST arguments.

* SB-C::REST-CONVERSION optimization declaration was pretty
pointless, take it out.

* Test our DX stuff in high-debug code as well.

2012-10-06 08:37:15 Tree
[396a1c] by Nathan Froyd Nathan Froyd

x86-64: micro-optimize LEA DWORD-REG,EA

If we are loading a DWORD EA into a DWORD register, we may not need the
REX prefix. Unlikely to occur in current SBCL code, but does come up
when you're writing your own VOPs for 32-bit operations.

2012-10-06 04:04:25 Tree
[3cd0a9] by David Lichteblau David Lichteblau

Update tests for threaded windows builds

As with previous changes to the test keywords, some tests are marked
as expected failures or skipped, but merely to keep test suite
output clean; these failures are not expected to be permament and
shall be improved upon later.

2012-10-05 19:40:18 Tree
[ec58ac] by David Lichteblau David Lichteblau

Use futexes on windows

2012-10-05 19:40:18 Tree
[7aef55] by David Lichteblau David Lichteblau

Preliminary work towards threads on win32

* Implement SB-THREAD

* Support WITH-TIMEOUT, etc.

Implementation details:

* Implement pthreads, futex API on top of Win32.
* Adds support for the timer facility using sb-wtimer.
* Implement an interruptable `nanosleep' using waitable timers.
* Threading on Windows uses safepoints to stop the world.
On this platform, either all or none of :SB-THREAD, :SB-SAFEPOINT,
:SB-THRUPT, and :SB-WTIMER need to be enabled together.
* On this platform, INTERRUPT-THREAD will not run interruptions
in a target thread that is executing foreign code, even though
the POSIX version of sb-thrupt still allows this (potentially
unsafe) form of signalling by default.

Does not yet include interruptible I/O, which will be made available
separately. Slime users are requested to build SBCL without threads
until then.

Note that these changes alone are not yet sufficient to make SBCL on
Windows an ideal backend. Users looking for a particularly stable
or thread-enabled version of SBCL for Windows are still advised to
use the well-known Windows branch instead.

This is a merge of features developed earlier by Dmitry Kalyanov and
Anton Kovalenko.

2012-10-05 19:38:38 Tree
Older >