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 b324a59179..e660fad1d8 100644
--- a/rts/sm/Evac.c
+++ b/rts/sm/Evac.c
@@ -28,6 +28,7 @@
#include "CNF.h"
#include "Scav.h"
#include "NonMoving.h"
+#include "CheckUnload.h" // n_unloaded_objects and markObjectCode
#if defined(THREADED_RTS) && !defined(PARALLEL_GC)
#define evacuate(p) evacuate1(p)
@@ -596,6 +597,11 @@ loop:
if (!HEAP_ALLOCED_GC(q)) {
if (!major_gc) return;
+ // Note [Object unloading] in CheckUnload.c
+ if (RTS_UNLIKELY(unload_mark_needed)) {
+ markObjectCode(q);
+ }
+
info = get_itbl(q);
switch (info->type) {