[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

looping in unwind-protect cleanups



Re: . . . let me tell you how the versions of
    Symbolics systems that implement my proposed checking do it.  None of
    these are released yet.  This is from memory, I didn't write the code.
    . . . 
    Note that the only data structure or dynamic state is one bit per catch,
    the only overhead is in throw, and the error signalling is implemented
    with an existing Common Lisp facility.

A lock is effectively 1 bit per catch, and by storeing it in the catch
frame, it is process-specific; lock-acquisition would be done in THROW,
and is very low overhead.  I suspect these two proposed implementations
are isomorphic at a fundamental level, with your "validity bit" replaceing
my "lock".

The only thing that seems a bit peculiar in your review of the new Symbolics
code is that the error signalled by "failure to acquire the lock" has to be 
treated specially (not caught by IGNORE-ERRORS, goes directly to BREAK, 
"does not pass GO, lands in jail", whatever).  Maybe that is the reason RAM 
and some others were so upset by the original proposal.  I think I see the 
point of the special handling; but I don't like the singularity.


-- JonL --