summaryrefslogtreecommitdiff
path: root/rts
diff options
context:
space:
mode:
authorSimon Marlow <simonmar@microsoft.com>2008-01-09 14:49:37 +0000
committerSimon Marlow <simonmar@microsoft.com>2008-01-09 14:49:37 +0000
commite5601110f37f48771b9e62296770a29e79d96e28 (patch)
tree8a8e8b81351db56179f6e3a6a343418a12006924 /rts
parentddacc40c5275110a2a17402bab704bac371cf001 (diff)
downloadhaskell-e5601110f37f48771b9e62296770a29e79d96e28.tar.gz
Fix bug: eval_thunk_selector was calling the unlocked evacuate()
Diffstat (limited to 'rts')
-rw-r--r--rts/sm/Evac.c-inc6
-rw-r--r--rts/sm/Scav.c-inc1
2 files changed, 7 insertions, 0 deletions
diff --git a/rts/sm/Evac.c-inc b/rts/sm/Evac.c-inc
index 7e1045273c..4fe9d5dacc 100644
--- a/rts/sm/Evac.c-inc
+++ b/rts/sm/Evac.c-inc
@@ -39,6 +39,7 @@ copy_tag(StgClosure **p, StgClosure *src, nat size, step *stp, StgWord tag)
return evacuate(p); // does the failed_to_evac stuff
}
#else
+ ASSERT(n_gc_threads == 1);
info = (W_)src->header.info;
src->header.info = &stg_EVACUATED_info;
#endif
@@ -563,3 +564,8 @@ loop:
barf("evacuate");
}
+
+#undef copy
+#undef copy_tag
+#undef copyPart
+#undef evacuate
diff --git a/rts/sm/Scav.c-inc b/rts/sm/Scav.c-inc
index 2206dd3994..e9aeb2c934 100644
--- a/rts/sm/Scav.c-inc
+++ b/rts/sm/Scav.c-inc
@@ -20,6 +20,7 @@
#else
#undef scavenge_block
#undef evacuate
+#undef recordMutableGen_GC
#endif
static void scavenge_block (bdescr *bd, StgPtr scan);