[Openmcl-cvs-notifications] Commit: ccl/level-0
gb at clozure.com
gb at clozure.com
Mon Sep 5 01:10:33 MDT 2005
Affected files with versions:
l0-hash.lisp,1.15
-----------------------------------
Details:
Update of /usr/local/tmpcvs/ccl-0.14-dev/ccl/level-0
In directory clozure.com:/tmp/cvs-serv10715/level-0
Modified Files:
l0-hash.lisp
Log Message:
Lots of changes.
This code hasn't really supported any kind of concurrent access in a long
time, so a lot of things (nhash.lock, nhash.locked-additions) have been
adding some combination of clutter/overhead here.
Inline a lot more, use more aggressive OPTIMIZE declarations.
Try to avoid UNWIND-PROTECT overhead associated with locking and unlocking,
disabling interrupts, inhibiting GC: wait for/grab the lock early, disable
interrupts while doing so, assume that unlocking happens (without need
to use UNWIND-PROTECT) because code is uninterruptible.
Try to enforce restrictions on (SETF GETHASH)/REMHASH behavior while
mapping is in effect. (Needs work.)
Represent keys in deleted key/value pairs as SLOT-UNBOUND-MARKERs, so
that we can tell whether an entry is empty or deleted with a single
memory reference.
Try to avoid excessive generality by using specialized lookup functions
(at least for EQ/EQL tables). Might want to define these via MACROLET'ed
code, since there's a lot of redundancy here; see %HASH-PROBE (which
also tries to specialize the redundancy.
More information about the Openmcl-cvs-notifications
mailing list