sbcl Log


Commit Date  
[a54616] (sbcl-1.0.51) by Juho Snellman Juho Snellman

1.0.51: will be tagged as "sbcl-1.0.51"

2011-08-20 23:15:10 Tree
[5abf3b] by Nikodemus Siivola Nikodemus Siivola

fix bogus deadlocks from interrupts and GCs

lp#807475

Going in despite the freeze since this is a regression that can
semi-randomly break correct code. *ouch*

Thanks to Bart Bortta and #sbcl for the analysis.

Problem 1:

T1 holds L1

T2 is waiting for L1

T2 is interrupted, interrupt handler grabs L2

T1 starts waiting on L2

Prior to this patch, when GET-MUTEX in T2's interrupt handler grabbed
L2 is marked T2 as still waiting for L1 -- which is not true until
the interrupt handler returns.

Problem 2:

T1 holds L1

T2 is waiting for L1

GC is triggered in T2 inside GET-MUTEX

T2 grabs *ALREADY-IN-GC* lock

GC is triggered in T1, T1 tries to get *ALREADY-IN-GC* lock.

Prior to this patch, when T1 detects a bogus deadlock as T2 has
been marked as waiting for L1 -- which is not true until the GC is
finished and normal execution resumes.

Problem 3:

T1 holds L1

T2 is waiting for L1

GC is triggered in T2 inside GET-MUTEX

T2 grabs lock L2 due to a finalizer or an after-gc-hook

GC is triggered in T1

T1 tries to grab L2 due to a finalizer, etc.

Same as problem 2, but with a user-lock and POST-GC instead of
*ALREADY-IN-GC* and SUB-GC.

This patch fixes the issue by saving, clearing, and restoring
the waiting-for mark in

1) interrupt handlers

2) SUB-GC

3) POST-GC

2011-08-15 13:32:14 Tree
[86d50b] by Paul Khuong Paul Khuong

Fix automatic &rest to &more conversion in unsafe code

Applying &rest lists to known/typed functions can lead to a
:fixed values call to %more-arg-values. In that case, unroll
it into several %more-arg of constant indices.

Reported, with test case, by Lutz Euler (lp#826459).

2011-08-14 23:27:42 Tree
[77ae1e] by Paul Khuong Paul Khuong

New function: SB-EXT:SPIN-LOOP-HINT

Some architectures have developed ways to help the processor execute
spin loops efficiently; expose them, where applicable, via
SB-EXT:SPIN-LOOP-HINT.

Assembles to PAUSE on x86oids, and to nothing on other platforms.

2011-08-14 22:31:52 Tree
[b83481] by Paul Khuong Paul Khuong

Missing NEWS entry for 4e431db

Also, missing credit for Lutz Euler's bug report on a7b24b5.

2011-08-14 21:32:27 Tree
[a7b24b] by Paul Khuong Paul Khuong

Handle SIMPLE-TYPE-ERROR when propagating bounds

Type conversions (e.g. bignum to float) may signal a
SIMPLE-TYPE-ERROR rather than returning an infinity.
Treat that case like an unknown value.

Add two tests.

Fixes lp#819269.

2011-08-14 21:28:22 Tree
[3254e1] by Paul Khuong Paul Khuong

New function: SB!KERNEL:%MULTIPLY-HIGH

* Does the same thing as only returning the first value of %MULTIPLY,
only better on some platforms.

* Implemented vas VOPs on x86, x86-64 and PPC. The PPC code sequence
is fully untested, and merely looks correct.

* VOPs for fixnum first argument are included, but will only be used
when the result is forcibly marked as fixnum, e.g., with TRULY-THE.
Questionnable, but I'd rather err on the side of straightforwardness
rather than put even more pressure on representation selection.

* Use it in the division-by-multiplication transform for unsigned
TRUNCATE by constant.

2011-08-14 20:49:27 Tree
[f17e3d] by Paul Khuong Paul Khuong

More efficient integer division by multiplication

* Exploit restricted range for inputs (e.g. fixnums).

* When the divisor is even, simplify with a mask instead of a shift.

* Clean up the code a bit: we don't want modular arithmetic, it's
actually all guaranteed not to wrap around.

* Change the test so that larger divisors are a bit more likely to
get tested too.

* Lots more things can be done, including generalizing the transform
to pretty much arbitrary rational divisor, or avoiding the costly
general code sequence in nearly all cases. Unfortunately, it's a
lot of (somewhat original, at that) code, and can be fairly slow;
if it matters to someone, I can try and find a compromise (contrib?).

2011-08-14 20:46:01 Tree
[4e431d] by Paul Khuong Paul Khuong

Various (mostly) SSE x86-64 instruction definition fixes and additions

* Fix typos in mnemonics and non-temporal store definitions;
* Add some instructions;
* CLFLUSH was totally broken.

Taken from Alexander Gavrilov's SSE intrinsics branch.

2011-08-14 17:34:13 Tree
[d5ec4e] by Nikodemus Siivola Nikodemus Siivola

fix DESCRIBE on compiled closures from EVAL

lp#824974

2011-08-13 11:35:49 Tree
[f066ad] by Christophe Rhodes Christophe Rhodes

allow user-defined STRING synonyms in MAKE-SEQUENCE

...and MAP, MERGE, COERCE and CONCATENATE too. This also meant
working a bit on TYPEXPAND, to make (STRING <N>) be unexpanded in the
same way as STRING, and consequently on VALUES-SPECIFIER-TYPE to
ensure that the system would still recognize those types.

Include test cases for the sequence functions but not for TYPEXPAND.

2011-08-12 12:58:41 Tree
[0f05d2] by Stas Boukarev Stas Boukarev

Declaim sb-di::valid-lisp-pointer-p inline.

Making it inline prevents from creating a SAP, and thus reduces
consing and improves performance. It's called a lot by
map-allocated-objects when GCing is disabled, so consing less is a
desirable property.

Reported by `lisper' on #lisp

2011-08-11 23:21:23 Tree
[6caf3e] by David Lichteblau David Lichteblau

Fix QUERY-FILE-SYSTEM for Windows UNC and device file names

Thanks to Anton Kovalenko.

2011-08-11 19:27:00 Tree
[7254da] by Anton Kovalenko Anton Kovalenko , pushed by David Lichteblau David Lichteblau

sb-bsd-sockets: Fix error code handling on Windows

Factored out into a new function for the win32-specific
WSAGetLastError call.

Run-time results now match the existing constant definitions.

Thanks to Anton Kovalenko.

2011-08-10 18:05:12 Tree
[cb0052] by David Lichteblau David Lichteblau

sb-simple-streams: In test lp491087, merge the pathname

Needed for Windows.

Thanks to Anton Kovalenko.

2011-08-10 18:05:06 Tree
[9b729f] by David Lichteblau David Lichteblau

sb-simple-streams: Close files before deleting them on revert

Thanks to Anton Kovalenko.

2011-08-10 18:04:54 Tree
[f179b4] by Anton Kovalenko Anton Kovalenko , pushed by David Lichteblau David Lichteblau

sb-simple-streams: use the Windows file mapping API for memory-mapped files

Thanks to Anton Kovalenko.

2011-08-10 18:04:50 Tree
[b990a4] by David Lichteblau David Lichteblau

sb-posix: in win32 tests, avoid certain hardcoded file names

stat.5: Create a fresh file instead of hardcoding c:\pagefile.sys
(was c:\config.sys until recently; was /bin/sh originally).

rmdir.error.3: Use %windir% instead of c:\.

Tests now pass with Wine on my system without local workarounds.

2011-08-10 18:04:43 Tree
[6800d1] by Anton Kovalenko Anton Kovalenko , pushed by David Lichteblau David Lichteblau

sb-posix: redefined test rmdir.error.3 to accept ENOTEMPTY for win32

Thanks to Anton Kovalenko.

2011-08-10 18:04:37 Tree
[ad4b18] by Anton Kovalenko Anton Kovalenko , pushed by David Lichteblau David Lichteblau

sb-win32: offer low-level bindings for file mapping functions

Includes functions offered by Windows that are similar in
spirit to mmap.

Currently these are low-level FFI versions only, and no attempt
is made to export them from sb-posix under the name mmap. In
sb-posix, only a wrapper for msync and definitions of several
constants is offered, as needed for sb-simple-streams.

Thanks to Anton Kovalenko.

Also take this opportunity to sort the sb-win32 package
definition as a flat list.

2011-08-10 18:04:33 Tree
[3ccd2c] by Anton Kovalenko Anton Kovalenko , pushed by David Lichteblau David Lichteblau

Avoid some exceptions in WAIT-UNTIL-FD-USABLE on Windows

Always report the :output direction as usable on win32.
Fixes this function as needed for sb-simple-streams.

Thanks to Anton Kovalenko.

2011-08-10 18:04:28 Tree
[ef751c] by David Lichteblau David Lichteblau

Tweak os_validate to support running SBCL on recent versions of Wine

SBCL now builds and runs on Wine reliably.

Credits: Fix developed by Anton Kovalenko.

2011-08-10 18:04:15 Tree
[1ae15c] by Nikodemus Siivola Nikodemus Siivola

generate-version.sh fixes

Make it work with detached heads and historical builds.

Previously a detached head broke the build, and trying to
do

git checkout master; git reset --hard sbcl-1.0.50; sh make.sh

got the version number wrong.

2011-08-10 10:36:36 Tree
[b021c1] by William Halliburton William Halliburton , pushed by Nikodemus Siivola Nikodemus Siivola

fix initial FILE-POSITION for OPEN :IF-EXISTS :APPEND

For O_APPEND opened files, lseek returns 0 until first write.
So we jump ahead initially.

lp#561642

2011-08-10 09:42:10 Tree
[20db73] by David Lichteblau David Lichteblau

New toplevel options --quit and --non-interactive

Implements lp#822712.

2011-08-09 14:50:43 Tree
Older >