/* -----------------------------------------------------------------------------
- * $Id: GC.c,v 1.53 1999/03/16 13:20:13 simonm Exp $
+ * $Id: GC.c,v 1.54 1999/03/17 16:28:34 sewardj Exp $
*
* (c) The GHC Team 1998-1999
*
case STABLE_NAME:
case IND_PERM:
case IND_OLDGEN_PERM:
- case CAF_UNENTERED:
{
StgPtr end;
break;
}
+ case CAF_UNENTERED:
+ {
+ StgCAF *caf = (StgCAF *)p;
+
+ caf->body = evacuate(caf->body);
+ if (failed_to_evac) {
+ failed_to_evac = rtsFalse;
+ recordOldToNewPtrs((StgMutClosure *)p);
+ } else {
+ caf->mut_link = NULL;
+ }
+ p += sizeofW(StgCAF);
+ break;
+ }
+
case CAF_ENTERED:
{
StgCAF *caf = (StgCAF *)p;
if (failed_to_evac) {
failed_to_evac = rtsFalse;
recordOldToNewPtrs((StgMutClosure *)p);
+ } else {
+ caf->mut_link = NULL;
}
p += sizeofW(StgCAF);
break;
failed_to_evac = rtsFalse;
p->mut_link = new_list;
new_list = p;
+ } else {
+ p->mut_link = NULL;
}
}
continue;
failed_to_evac = rtsFalse;
p->mut_link = new_list;
new_list = p;
- }
+ } else {
+ p->mut_link = NULL;
+ }
}
continue;