<> <> <> DIRECTORY Allocator USING [NHeaderP], PrincOps USING [GlobalFrameHandle], SafeStorage USING [Type]; CircularGarbageTraceAndSweep: DEFINITIONS = BEGIN <<>> maxNReferers: NAT = 10; APNodes: TYPE = ARRAY [0..maxNReferers) OF Allocator.NHeaderP; WhoPointsTo: PROC [nhp: Allocator.NHeaderP, cycleLimit: NAT _ 20] RETURNS [ referers: REF APNodes, gfh: PrincOps.GlobalFrameHandle, foundInLocalFrame, foundInCircularStructure: BOOL, cycles: NAT _ 0] ; <> <<>> WhoPointsToRef: PROC [ref: REF, cycleLimit: NAT _ 20] RETURNS [ referers: LIST OF REF, gfh: PrincOps.GlobalFrameHandle, foundInLocalFrame, foundInCircularStructure: BOOL, cycles: NAT _ 0] ; <> <<>> FindCircularGarbageTypes: PROC [nObjects: CARDINAL, reportRopes: BOOL _ TRUE] RETURNS [ nGarbage, nSeen: INT, garbage: LIST OF SafeStorage.Type _ NIL] ; <> <<>> FindCircularGarbage: PROC [nObjects: CARDINAL, reportRopes: BOOL _ TRUE] RETURNS [ nGarbage, nSeen: INT, garbage: LIST OF REF _ NIL] ; <> <<>> FindConnectedComponent: PROC [rootObject: REF ANY, nObjects: CARDINAL, reportRopes: BOOL _ TRUE] RETURNS [ allOnList: BOOL, countReturned: INT, circularObjects: LIST OF REF ]; <> <<>> REFToNHP: PROC[ref: REF ANY] RETURNS[Allocator.NHeaderP] ; NHPToREF: PROC[nhp: Allocator.NHeaderP] RETURNS[REF ANY]; <> <<>> END. <<>> <> <> <> <> <<>> << >> <> <> <> <> <> <> <<>>