summaryrefslogtreecommitdiffstats
path: root/byterun/compact.c
diff options
context:
space:
mode:
Diffstat (limited to 'byterun/compact.c')
-rw-r--r--byterun/compact.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/byterun/compact.c b/byterun/compact.c
index 22da4862a..68054d4af 100644
--- a/byterun/compact.c
+++ b/byterun/compact.c
@@ -15,6 +15,7 @@
#include <string.h>
#include "config.h"
+#include "finalise.h"
#include "freelist.h"
#include "gc.h"
#include "gc_ctrl.h"
@@ -182,8 +183,10 @@ void compact_heap (void)
Don't forget roots and weak pointers. */
{
/* Invert roots first because the threads library needs some heap
- data structures to find its roots. */
+ data structures to find its roots. Fortunately, it doesn't need
+ the headers (see above). */
do_roots (invert_root);
+ final_do_weak_roots (invert_root);
ch = heap_start;
while (ch != NULL){