diff options
author | Sven Tennie <sven.tennie@wire.com> | 2023-03-16 19:54:12 +0000 |
---|---|---|
committer | Sven Tennie <sven.tennie@wire.com> | 2023-03-16 19:54:23 +0000 |
commit | c289e31721ac471b78a106c652e6409dcc6d51da (patch) | |
tree | ceb51d6a5f926ace19290d2a5f324a229bf30df4 | |
parent | 2eb13799fbae858dd5bb3fc8d95abf760243e1ad (diff) | |
download | haskell-c289e31721ac471b78a106c652e6409dcc6d51da.tar.gz |
Compact.c
-rw-r--r-- | rts/sm/Compact.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/rts/sm/Compact.c b/rts/sm/Compact.c index f6e65ecc9a..42c8cea097 100644 --- a/rts/sm/Compact.c +++ b/rts/sm/Compact.c @@ -27,6 +27,7 @@ #include "StablePtr.h" #include "StableName.h" #include "Hash.h" +#include "rts/storage/Closures.h" // Turn off inlining when debugging - it obfuscates things #if defined(DEBUG) @@ -358,13 +359,16 @@ thread_stack(P_ p, P_ stack_end) } case RET_BCO: { - p++; - StgBCO *bco = (StgBCO *)*p; - thread((StgClosure **)p); - p++; - W_ size = BCO_BITMAP_SIZE(bco); - thread_large_bitmap(p, BCO_BITMAP(bco), size); - p += size; + StgRetBCO* retBCO; + StgBCO* bco; + StgWord size; + + retBCO = (StgRetBCO *) p; + bco = retBCO->bco; + thread((StgClosure **) &retBCO->bco); + size = BCO_BITMAP_SIZE(bco); + thread_large_bitmap((P_) &retBCO->args, BCO_BITMAP(bco), size); + p += sizeofW(StgRetBCO) + size; continue; } |