Skip to content
Snippets Groups Projects
Commit b915a4cb authored by Simon Marlow's avatar Simon Marlow
Browse files

[project @ 1999-01-06 12:27:47 by simonm]

Fixes to the large bitmap code.
parent 24b29d94
No related branches found
No related tags found
No related merge requests found
/* ----------------------------------------------------------------------------- /* -----------------------------------------------------------------------------
* $Id: GC.c,v 1.4 1999/01/06 12:15:35 simonm Exp $ * $Id: GC.c,v 1.5 1999/01/06 12:27:47 simonm Exp $
* *
* Two-space garbage collector * Two-space garbage collector
* *
...@@ -1185,6 +1185,7 @@ scavenge_stack(StgPtr p, StgPtr stack_end) ...@@ -1185,6 +1185,7 @@ scavenge_stack(StgPtr p, StgPtr stack_end)
case RET_BIG: case RET_BIG:
case RET_VEC_BIG: case RET_VEC_BIG:
{ {
StgPtr q;
StgLargeBitmap *large_bitmap; StgLargeBitmap *large_bitmap;
nat i; nat i;
...@@ -1193,6 +1194,7 @@ scavenge_stack(StgPtr p, StgPtr stack_end) ...@@ -1193,6 +1194,7 @@ scavenge_stack(StgPtr p, StgPtr stack_end)
for (i=0; i<large_bitmap->size; i++) { for (i=0; i<large_bitmap->size; i++) {
bitmap = large_bitmap->bitmap[i]; bitmap = large_bitmap->bitmap[i];
q = p + sizeof(W_) * 8;
while (bitmap != 0) { while (bitmap != 0) {
if ((bitmap & 1) == 0) { if ((bitmap & 1) == 0) {
(StgClosure *)*p = evacuate((StgClosure *)*p); (StgClosure *)*p = evacuate((StgClosure *)*p);
...@@ -1200,6 +1202,12 @@ scavenge_stack(StgPtr p, StgPtr stack_end) ...@@ -1200,6 +1202,12 @@ scavenge_stack(StgPtr p, StgPtr stack_end)
p++; p++;
bitmap = bitmap >> 1; bitmap = bitmap >> 1;
} }
if (i+1 < large_bitmap->size) {
while (p < q) {
(StgClosure *)*p = evacuate((StgClosure *)*p);
p++;
}
}
} }
/* and don't forget to follow the SRT */ /* and don't forget to follow the SRT */
...@@ -1210,7 +1218,7 @@ scavenge_stack(StgPtr p, StgPtr stack_end) ...@@ -1210,7 +1218,7 @@ scavenge_stack(StgPtr p, StgPtr stack_end)
barf("scavenge_stack: weird activation record found on stack.\n"); barf("scavenge_stack: weird activation record found on stack.\n");
} }
} }
} }
/*----------------------------------------------------------------------------- /*-----------------------------------------------------------------------------
scavenge the large object list. scavenge the large object list.
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment