|
@@ -131,18 +131,6 @@ TYPE
|
|
|
IF ~timerStopped THEN timerActivity.UpdateTicks END
|
|
|
END;
|
|
|
END Clock;
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- FinalizedCollection* = OBJECT (* base type for collection, extended in Kernel.Mod *)
|
|
|
- PROCEDURE RemoveAll*(obj: ANY); (** abstract *)
|
|
|
- BEGIN HALT(301) END RemoveAll;
|
|
|
- END FinalizedCollection;
|
|
|
-
|
|
|
- FinalizerNode* = POINTER TO RECORD (Heaps.FinalizerNode)
|
|
|
- c*: FinalizedCollection (* base type for collection containing object *)
|
|
|
- END;
|
|
|
-
|
|
|
|
|
|
FinalizerCaller = OBJECT (* separate active object that calls finalizers *)
|
|
|
VAR
|
|
@@ -161,8 +149,8 @@ TYPE
|
|
|
LOOP
|
|
|
n := Heaps.GetFinalizer();
|
|
|
IF n = NIL THEN EXIT END;
|
|
|
- IF n IS FinalizerNode THEN
|
|
|
- n(FinalizerNode).c.RemoveAll(n.objStrong) (* remove it if it is not removed yet *)
|
|
|
+ IF n.collection # NIL THEN
|
|
|
+ n.collection.RemoveAll(n.objStrong) (* remove it if it is not removed yet *)
|
|
|
END;
|
|
|
IF n.finalizer # NIL THEN
|
|
|
n.finalizer(n.objStrong) (* may acquire locks *)
|