The attached patch replaces *BIG-COMPILER-LOCK* and *PCL-LOCK* with a
*WORLD-LOCK* which a few bits and pieces of CLOS also grab.
1. Make obsolete instance updating (and obsoleting!) thread safe.
2. Make class graph changes thread safe.
I need to spend some more cycles on this still, but I would be
particularly interested in hearing what kind of stability and
performance effects it has on non-trivial CLOS programs, particularly
those using the metaobject protocol, and *particularly* those calling
ENSURE-CLASS-USING-CLASS or MAKE-INSTANCES-OBSOLETE at runtime.
If you have such an application, when profiling the effect of this
patch, please pay special attention to the degree of parallelism
before and after. I would rather slow everything down a small amount
than overly throttle parallel programs with this lock... I should not
have to say this, but... when doing the measurements, *please* use the
same version of SBCL minus the patch to compare against!
(Performance reports from single threaded CLOS applications are also
welcome, of course. Just less crucial.)
On Tue, Dec 2, 2008 at 12:33 PM, Nikodemus Siivola
> The attached patch replaces *BIG-COMPILER-LOCK* and *PCL-LOCK* with a
> *WORLD-LOCK* which a few bits and pieces of CLOS also grab.
Oops, there was one bothched rename left in that patch, breaking a few
things. Updated patch attached. (Thanks to Wendall Marvel.)