-- SSPinnedImpl.Mesa
-- 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.