-- last edited May 11, 1983 5:15 pm by Paul Rovner
DIRECTORY
DeviceCleanup USING[Item, Reason, Await],
RTMicrocode USING[RTMOVESTATUS],
RTRefCounts USING[useUCodedGC];
SSPinnedImpl: PROGRAM
IMPORTS DeviceCleanup, RTMicrocode, RTRefCounts
EXPORTS RTRefCounts
= BEGIN
-- Here 'cause its code must be pinned.
InitializeCleanup:
PUBLIC
PROC[gcStateBank:
CARDINAL] = {
-- exported to RTRefCounts
DO
item: DeviceCleanup.Item;
reason: DeviceCleanup.Reason ← DeviceCleanup.Await[@item];
SELECT reason
FROM
turnOff, kill =>
IF RTRefCounts.useUCodedGC
THEN [] ← RTMicrocode.RTMOVESTATUS[upDate];
turnOn =>
IF RTRefCounts.useUCodedGC
THEN [] ← RTMicrocode.RTMOVESTATUS[initialize, gcStateBank];
ENDCASE;
ENDLOOP;
};
END.