sbcl-cvs-import Log

Commit Date  
[c39567] by Cyrus Harmon Cyrus Harmon fix x86-64/darwin build

* use MAC_OS_X_VERSION_10_5 instead of __DARWIN_UNIX03 as the test
for new style headers as __DARWIN_UNIX03 is defined when building
x86-64 on 10.4

2007-10-08 04:30:21 Tree
[127fd3] by Cyrus Harmon Cyrus Harmon support for Darwin versions that support __DARWIN_UNIX03

* on some versions of darwin symbols without a leading _ are dropped
by the linker. Use a leading _ on Darwin ldso_stub functions.

* Add a FIXME about 128-bit integeer passing being broken on x86-64

* _DARWIN_UNIX03 support
** os_context_t is now __darwin_ucontext
** eip -> __eip (and friends) - use macro hackery EIP etc...
** use darwin_ucontext/darwin_mcontext instead of struct
ucontext/mcontext where appropriate.
** struct ucontext -> os_context_t where appropriate

* allow socket-error for the aceptable errors in inet-socket error
test cases

* Add a fix me about a rumored OS bug fix that in name-service tests

2007-10-08 01:46:30 Tree
[df1314] by Cyrus Harmon Cyrus Harmon fix sb-posix test on linux

* look for sys instead of wheel when testing getgrnam

2007-10-07 20:21:58 Tree
[2abe57] by Andreas Fuchs Andreas Fuchs Fix sb-posix:get{{gr,pw}nam},pwuid,grgid} for non-existing entries.

Used to signal memory fault, now returns NIL on queries for non-existing
users or groups.

2007-10-07 11:00:33 Tree
[4872fc] by Thiemo Seufer Thiemo Seufer Lesson: Test before commit.

2007-10-06 21:53:45 Tree
[50ea2c] by Cyrus Harmon Cyrus Harmon better mach exception handling

* Patch from Ole Myren Rohne for better mach exception handling. This
deals with the case where the kernel started a signal handler
before our mach exception handler got a chance to run. This was
causing us to inappropriately SIGILL and die. This patch fixes
this, along with some general cleanup issues, including the
call_handler_on_thread wrapper function.

* TODO: this logic needs to be applied to the x86-64/darwin port as

2007-10-06 17:55:05 Tree
[0b8564] by Cyrus Harmon Cyrus Harmon sb-posix support for getgrnam and getgrgid

* add alien-group and group protocol-class

* add define-gr-call macro a la define-pw-call

* alien definitions for getgrnam and getgrgid

* trivial test for above calls

2007-10-06 16:53:53 Tree
[015dc5] by NIIMI Satoshi NIIMI Satoshi Fix build without sb-thread

2007-10-06 13:26:32 Tree
[513aec] by Nikodemus Siivola Nikodemus Siivola MUTEX refactoring & optimization

* (SETF MUTEX-VALUE) removed entirely. Using it was never sane,
and in the new setup entirely broken.

* On futex platforms, keep track of state of the mutex: free, taken,
or contested (taken and may have one ore more threads waiting).

* On release, if the mutex is not contested, there is no need to
perform the wakeup.

* Document assumptions made by GET-MUTEX & RELEASE-MUTEX better.

* Update FASL version.

2007-10-05 14:48:40 Tree
[ce3fc2] by Nikodemus Siivola Nikodemus Siivola export semaphore interface

* Semaphores are a fundamental threading construct -- export them.
Clean up the interface slightly: not (SETF SEMAPHORE-COUNT), note
that being a subclass of STRUCTURE-OBJECT is not guaranteed, etc.

2007-10-05 14:00:08 Tree
[279df8] by NIIMI Satoshi NIIMI Satoshi Change unportable find option "-path"

The find option "-path" is not portable. Use "-prune" not to
recurse into CVS directory.

2007-10-05 11:30:20 Tree
[cbf779] by Rudi Schlatte Rudi Schlatte More sb-posix documentation, thanks to Richard M Kreuter

2007-10-05 09:21:28 Tree
[72703d] by Thiemo Seufer Thiemo Seufer Build fix, add a missing bit of hashtable rewrite.

2007-10-05 00:55:27 Tree
[4f87ff] by Thiemo Seufer Thiemo Seufer Don't include CVS cruft in binary distributions.

2007-10-04 23:02:59 Tree
[2df0b2] by Thiemo Seufer Thiemo Seufer Shuffle def* foo around for less compiler warnings.

2007-10-04 23:01:57 Tree
[32dc59] by Thiemo Seufer Thiemo Seufer Code formatting.

2007-10-04 23:00:26 Tree
[4e8e7b] by Thiemo Seufer Thiemo Seufer MIPS will soon need an explicit -fPIC flag, too.

2007-10-04 22:59:32 Tree
[a3d0dc] by Thiemo Seufer Thiemo Seufer Code provision for a future MIPS gencgc port.

2007-10-04 22:56:15 Tree
[eab519] by Thiemo Seufer Thiemo Seufer Check also for MIPS foreign_function_call lossage
... and fix a spelling typo.

2007-10-04 22:54:48 Tree
[4e2960] by Thiemo Seufer Thiemo Seufer Define __USE_GNU only if it wasn't already defined.

2007-10-04 22:52:51 Tree
[e51298] by Thiemo Seufer Thiemo Seufer Reformat string, and fix compiler warning.

2007-10-04 22:48:45 Tree
[0f4444] by Rudi Schlatte Rudi Schlatte Add some documentation for sb-posix

Mutilated contrib/sb-posix/README, removing
non-implementation-specific bits and referring to sb-alien instead.
... Some examples would be nice.

2007-10-04 05:12:34 Tree
[84ccdc] by Rudi Schlatte Rudi Schlatte Some sb-posix constants for stat().

Define S_IFMT and its friends S_IFIFO, S_IFDIR etc.

2007-10-02 07:17:26 Tree
[f318d0] by Juho Snellman Juho Snellman remove locking and gc inhibition from hash-tables, power of 2 sizes

This commit removes a bunch of bottlenecks from the hash-table
implementation. It speeds up GETHASH, (SETF GETHASH) and
REMHASH by a factor of 2-4x (on platforms with a real
WITH-PINNED-OBJECTS) depending on the operation. On the flip
side, no automatic locking is done on tables any more, so
multi-threaded applications must do their own locking. (The
locking done by SBCL was always just an implementation detail,
not a part of the external interface). By popular demand it's
also still safe to have multiple readers on the same table
without locking.

Originally GCs were inhibited during most hash-table
operations for two reasons. To prevent the GC from rehashing a
table while a Lisp-side operation is going on, and to prevent
the GC from moving the key after the hash-value has been

More recently, most hash-tables operations have acquired a
lock on the table in order to prevent two concurrent writers
from corrupting the chains. While it's never been the intent
for the standard data structures to be automatically
thread-safe in SBCL, this locking had to be done since corrupt
tables could lead to infinite GC loops.

Both the locking and the without-gcing are expensive
operations relative to the total cost of a hash-table lookup.
This commit removes both the gc inhibition and the locks.
Additionally we switch to power of two table size, which
allows calculating a cheaper hash -> bucket with cheaper
operations than MOD.

* The GC no longer does the rehashing itself, but just marks
the hash-table as needing a rehash, which will then be done
Lisp-side when the table is next accessed. While it's
possible to find cases where the former behaviour has better
performance, they're very contrived.
* The hash-table operations that work on the chains now check
for loops in the chains, and signal an error if one is found.
* The hash-table operations now pin the key before calculating
the hash value (needed for EQ-based hash functions).
* Add a GC epoch value that GETHASH can use to check whether
a GC happened during the lookup. This is needed since another
thread calling GETHASH on the same table might have caused it
to be rehashed.
* Kill the old MUST-REHASH vector header, and replace it with a
slot in the HASH-TABLE structure. The overloading of the header
caused missed rehashings when both the GC and %%PUTHASH modified
it at the same time.
* Switch to power of two table sizes, with a slightly more complex
hash value -> bucket calculation than just taking the low bits,
which in many cases have a very skewed distribution for the existing
SBCL hash functions. Still a lot faster than using MOD.
* Leave in locking and GC inhibition during rehashing (needed to
allow multiple readers to coexist) and for weak hash-tables
(they need some GC support, and the code is much simpler when
all of the logic is in the GC instead of interleaved in the GC and
Lisp-side). Neither of these cases is performance critical.

2007-09-30 23:18:50 Tree
[81ec57] by William Harold Newman William Harold Newman trivial change: Print more explicit message upon entering LDB.

2007-09-29 13:27:29 Tree
Older >