summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2019-03-05 00:07:06 -0500
committerMarge Bot <ben+marge-bot@smart-cactus.org>2019-03-06 15:53:32 -0500
commita4944d8d98770b869f6aa5fb667877c56c3f8825 (patch)
tree26ccb8bf599603af7620c974bf0ab2560eb39103
parent5aab1d9ca927a058135ca9a08c10ea3474cbe251 (diff)
downloadhaskell-a4944d8d98770b869f6aa5fb667877c56c3f8825.tar.gz
Fix it
-rw-r--r--rts/sm/Compact.c8
-rw-r--r--rts/sm/Compact.h4
-rw-r--r--rts/sm/GC.c4
3 files changed, 10 insertions, 6 deletions
diff --git a/rts/sm/Compact.c b/rts/sm/Compact.c
index bd45489da1..77523aea08 100644
--- a/rts/sm/Compact.c
+++ b/rts/sm/Compact.c
@@ -940,7 +940,9 @@ update_bkwd_compact( generation *gen )
}
void
-compact(StgClosure *static_objects, StgWeak *dead_weak_ptr_list, StgTSO *resurrected_threads)
+compact(StgClosure *static_objects,
+ StgWeak **dead_weak_ptr_list,
+ StgTSO **resurrected_threads)
{
W_ n, g, blocks;
generation *gen;
@@ -958,7 +960,7 @@ compact(StgClosure *static_objects, StgWeak *dead_weak_ptr_list, StgTSO *resurre
}
if (dead_weak_ptr_list != NULL) {
- thread((void *)&dead_weak_ptr_list); // tmp
+ thread((void *)dead_weak_ptr_list); // tmp
}
// mutable lists
@@ -981,7 +983,7 @@ compact(StgClosure *static_objects, StgWeak *dead_weak_ptr_list, StgTSO *resurre
}
// any threads resurrected during this GC
- thread((void *)&resurrected_threads);
+ thread((void *)resurrected_threads);
// the task list
{
diff --git a/rts/sm/Compact.h b/rts/sm/Compact.h
index ba39c30acd..570de7a340 100644
--- a/rts/sm/Compact.h
+++ b/rts/sm/Compact.h
@@ -46,7 +46,7 @@ is_marked(StgPtr p, bdescr *bd)
}
void compact (StgClosure *static_objects,
- StgWeak *dead_weak_ptr_list,
- StgTSO *resurrected_threads);
+ StgWeak **dead_weak_ptr_list,
+ StgTSO **resurrected_threads);
#include "EndPrivate.h"
diff --git a/rts/sm/GC.c b/rts/sm/GC.c
index b3cc4482aa..0544fd29da 100644
--- a/rts/sm/GC.c
+++ b/rts/sm/GC.c
@@ -473,7 +473,9 @@ GarbageCollect (uint32_t collect_gen,
// Finally: compact or sweep the oldest generation.
if (major_gc && oldest_gen->mark) {
if (oldest_gen->compact)
- compact(gct->scavenged_static_objects, dead_weak_ptr_list, resurrected_threads);
+ compact(gct->scavenged_static_objects,
+ &dead_weak_ptr_list,
+ &resurrected_threads);
else
sweep(oldest_gen);
}