diff options
Diffstat (limited to 'rts/sm/Evac.c')
-rw-r--r-- | rts/sm/Evac.c | 6 |
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) { |