X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=rts%2Fsm%2FGC.c;h=1fee3941395cc45d4f2b671844e0899e8c47dc09;hb=8a2809c29de9f23eba7ca682b48390033a9d40f6;hp=2870be150c3639eed44a44a7721ce5179d8d51e5;hpb=1cb0eb071f1316d6650f354166506789a2638720;p=ghc-hetmet.git diff --git a/rts/sm/GC.c b/rts/sm/GC.c index 2870be1..1fee394 100644 --- a/rts/sm/GC.c +++ b/rts/sm/GC.c @@ -208,8 +208,10 @@ GarbageCollect ( rtsBool force_major_gc ) debugTrace(DEBUG_gc, "starting GC"); #if defined(RTS_USER_SIGNALS) - // block signals - blockUserSignals(); + if (RtsFlags.MiscFlags.install_signal_handlers) { + // block signals + blockUserSignals(); + } #endif // tell the STM to discard any cached closures its hoping to re-use @@ -482,10 +484,6 @@ GarbageCollect ( rtsBool force_major_gc ) */ markStablePtrTable(mark_root); - /* Mark the root pointer table. - */ - markRootPtrTable(mark_root); - /* ------------------------------------------------------------------------- * Repeatedly scavenge all the areas we know about until there's no * more scavenging to be done. @@ -653,7 +651,7 @@ GarbageCollect ( rtsBool force_major_gc ) if (g <= N) { copied -= stp->hp_bd->start + BLOCK_SIZE_W - stp->hp_bd->free; - scavd_copied -= (P_)(BLOCK_ROUND_UP(stp->scavd_hp)) - stp->scavd_hp; + scavd_copied -= stp->scavd_hpLim - stp->scavd_hp; } } @@ -1018,8 +1016,10 @@ GarbageCollect ( rtsBool force_major_gc ) stat_endGC(allocated, live, copied, scavd_copied, N); #if defined(RTS_USER_SIGNALS) - // unblock signals again - unblockUserSignals(); + if (RtsFlags.MiscFlags.install_signal_handlers) { + // unblock signals again + unblockUserSignals(); + } #endif RELEASE_SM_LOCK;