summaryrefslogtreecommitdiff
path: root/rts/sm/Evac.c
diff options
context:
space:
mode:
Diffstat (limited to 'rts/sm/Evac.c')
-rw-r--r--rts/sm/Evac.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/rts/sm/Evac.c b/rts/sm/Evac.c
index f080221e28..ffcbf74762 100644
--- a/rts/sm/Evac.c
+++ b/rts/sm/Evac.c
@@ -27,6 +27,7 @@
#include "LdvProfile.h"
#include "CNF.h"
#include "Scav.h"
+#include "CheckUnload.h" // n_unloaded_objects and markObjectCode
#if defined(THREADED_RTS) && !defined(PARALLEL_GC)
#define evacuate(p) evacuate1(p)
@@ -518,6 +519,11 @@ loop:
if (!HEAP_ALLOCED_GC(q)) {
if (!major_gc) return;
+ // Note [Object unloading] in CheckUnload.c
+ if (n_unloaded_objects != 0) {
+ markObjectCode(q);
+ }
+
info = get_itbl(q);
switch (info->type) {