|
@@ -667,13 +667,13 @@ BEGIN
|
|
IF sweepMarkValue < currentMarkValue THEN
|
|
IF sweepMarkValue < currentMarkValue THEN
|
|
(*Trace.String("clear free lists and lazy sweep"); Trace.Ln;*)
|
|
(*Trace.String("clear free lists and lazy sweep"); Trace.Ln;*)
|
|
ClearFreeLists;
|
|
ClearFreeLists;
|
|
- LazySweep(MAX(LONGINT), p)
|
|
|
|
|
|
+ LazySweep(MAX(SIZE), p)
|
|
END;
|
|
END;
|
|
p := GetFreeBlockAndSplit(size)
|
|
p := GetFreeBlockAndSplit(size)
|
|
ELSE
|
|
ELSE
|
|
LazySweep(size, p)
|
|
LazySweep(size, p)
|
|
END;
|
|
END;
|
|
- IF size # MAX(LONGINT) THEN
|
|
|
|
|
|
+ IF size # MAX(SIZE) THEN
|
|
INC(throughput, size);
|
|
INC(throughput, size);
|
|
END;
|
|
END;
|
|
END GetFreeBlock;
|
|
END GetFreeBlock;
|
|
@@ -691,7 +691,7 @@ CONST StrongChecks = FALSE;
|
|
BEGIN{UNCHECKED}
|
|
BEGIN{UNCHECKED}
|
|
INC(NgcSweeps);
|
|
INC(NgcSweeps);
|
|
time1 := Machine.GetTimer();
|
|
time1 := Machine.GetTimer();
|
|
- ASSERT(~EnableFreeLists OR (size = MAX(LONGINT)));
|
|
|
|
|
|
+ ASSERT(~EnableFreeLists OR (size = MAX(SIZE)));
|
|
lastFreeBlockAdr := NilVal;
|
|
lastFreeBlockAdr := NilVal;
|
|
lastFreeBlock := NIL;
|
|
lastFreeBlock := NIL;
|
|
IF (sweepMemBlock = NIL) (* OR (sweepMarkValue < currentMarkValue)*) THEN (* restart lazy sweep including clearance of lists *)
|
|
IF (sweepMemBlock = NIL) (* OR (sweepMarkValue < currentMarkValue)*) THEN (* restart lazy sweep including clearance of lists *)
|
|
@@ -1140,7 +1140,7 @@ BEGIN
|
|
(* TRACE(LONGINT((time2-time1) DIV (1024*1024))); *)
|
|
(* TRACE(LONGINT((time2-time1) DIV (1024*1024))); *)
|
|
END;
|
|
END;
|
|
|
|
|
|
- IF EnableFreeLists THEN GetFreeBlock(MAX(LONGINT), f) END;
|
|
|
|
|
|
+ IF EnableFreeLists THEN GetFreeBlock(MAX(SIZE), f) END;
|
|
|
|
|
|
END CollectGarbage;
|
|
END CollectGarbage;
|
|
|
|
|
|
@@ -1153,7 +1153,7 @@ END InvokeGC;
|
|
PROCEDURE ReturnBlocks;
|
|
PROCEDURE ReturnBlocks;
|
|
VAR memBlock {UNTRACED}, free{UNTRACED}: Machine.MemoryBlock; p: ADDRESS; heapBlock {UNTRACED}: HeapBlock; f: FreeBlock;
|
|
VAR memBlock {UNTRACED}, free{UNTRACED}: Machine.MemoryBlock; p: ADDRESS; heapBlock {UNTRACED}: HeapBlock; f: FreeBlock;
|
|
BEGIN
|
|
BEGIN
|
|
- GetFreeBlock(MAX(LONGINT), f);
|
|
|
|
|
|
+ GetFreeBlock(MAX(SIZE), f);
|
|
memBlock := Machine.memBlockHead;
|
|
memBlock := Machine.memBlockHead;
|
|
WHILE memBlock # NIL DO
|
|
WHILE memBlock # NIL DO
|
|
free := NIL;
|
|
free := NIL;
|
|
@@ -1178,7 +1178,7 @@ END ReturnBlocks;
|
|
PROCEDURE FullSweep*;
|
|
PROCEDURE FullSweep*;
|
|
VAR p {UNTRACED}: FreeBlock;
|
|
VAR p {UNTRACED}: FreeBlock;
|
|
BEGIN
|
|
BEGIN
|
|
- GetFreeBlock(MAX(LONGINT), p);
|
|
|
|
|
|
+ GetFreeBlock(MAX(SIZE), p);
|
|
END FullSweep;
|
|
END FullSweep;
|
|
|
|
|
|
PROCEDURE LazySweepGC*;
|
|
PROCEDURE LazySweepGC*;
|
|
@@ -1188,8 +1188,8 @@ BEGIN
|
|
GC;
|
|
GC;
|
|
(* return blocks now *)
|
|
(* return blocks now *)
|
|
Machine.Acquire(Machine.Heaps);
|
|
Machine.Acquire(Machine.Heaps);
|
|
- (* trying to satisfy a request of MAX(LONGINT) bytes will never succeed - lazy sweep runs until end of heap *)
|
|
|
|
- GetFreeBlock(MAX(LONGINT), p);
|
|
|
|
|
|
+ (* trying to satisfy a request of MAX(SIZE) bytes will never succeed - lazy sweep runs until end of heap *)
|
|
|
|
+ GetFreeBlock(MAX(SIZE), p);
|
|
IF EnableReturnBlocks THEN ReturnBlocks END;
|
|
IF EnableReturnBlocks THEN ReturnBlocks END;
|
|
Machine.Release(Machine.Heaps);
|
|
Machine.Release(Machine.Heaps);
|
|
END LazySweepGC;
|
|
END LazySweepGC;
|