SetsAndStuffLocking.Mesa
Last tweaked by Mike Spreitzer on September 21, 1987 12:02:22 pm PDT
DIRECTORY Atom, Collections, IntFunctions, PairCollections;
SetsAndStuffLocking:
CEDAR
MONITOR
LOCKS pml USING pml: LONG POINTER TO MONITORLOCK
EXPORTS Collections, IntFunctions, PairCollections
=
BEGIN OPEN IntFunctions, PairCollections, Collections;
UpdateSpaceOther:
PUBLIC
PROC [s: Space,
Update:
PROC [Atom.PropList]
RETURNS [Atom.PropList]] ~
TRUSTED {
Entry:
ENTRY
PROC [pml:
LONG
POINTER
TO
MONITORLOCK] ~
TRUSTED {
ENABLE UNWIND => NULL;
s.other ← Update[s.other];
RETURN};
Entry[@s.LOCK];
RETURN};
UpdateCollectionClassOther:
PUBLIC
PROC [class: CollectionClass,
Update:
PROC [Atom.PropList]
RETURNS [Atom.PropList]] ~
TRUSTED {
Entry:
ENTRY
PROC [pml:
LONG
POINTER
TO
MONITORLOCK] ~
TRUSTED {
ENABLE UNWIND => NULL;
class.other ← Update[class.other];
RETURN};
Entry[@class.LOCK];
RETURN};
UpdatePairCollClassOther:
PUBLIC
PROC [class: PairCollClass,
Update:
PROC [Atom.PropList]
RETURNS [Atom.PropList]] ~
TRUSTED {
Entry:
ENTRY
PROC [pml:
LONG
POINTER
TO
MONITORLOCK] ~
TRUSTED {
ENABLE UNWIND => NULL;
class.other ← Update[class.other];
RETURN};
Entry[@class.LOCK];
RETURN};
UpdateIntFnClassOther:
PUBLIC
PROC [class: IntFnClass,
Update:
PROC [Atom.PropList]
RETURNS [Atom.PropList]] ~
TRUSTED {
Entry:
ENTRY
PROC [pml:
LONG
POINTER
TO
MONITORLOCK] ~
TRUSTED {
ENABLE UNWIND => NULL;
class.other ← Update[class.other];
RETURN};
Entry[@class.LOCK];
RETURN};
END.