diff options
author | James Clarke <jrtc27@jrtc27.com> | 2017-10-18 16:33:28 -0400 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2017-10-19 16:40:09 -0400 |
commit | b6204f70501ec4ce4015503421c8a83c6f0fa008 (patch) | |
tree | e2d5b6daa6738a582700405235cb58a6c7bf6ddd /rts | |
parent | 098dc97b80768a6aeabce4eb6d6d7e6e9a9a75b6 (diff) | |
download | haskell-b6204f70501ec4ce4015503421c8a83c6f0fa008.tar.gz |
Untag the potential AP_STACK in stg_getApStackValzh
If the AP_STACK has been evaluated and a GC has run, the BLACKHOLE
indirection will have been removed, and the StablePtr for the original
AP_STACK referred to be GHCi will therefore now point directly to the
value, and may be tagged. Add a hist002 test for this, and make sure
hist001 doesn't do an idle GC, so the case when it's still a BLACKHOLE
is definitely also tested.
Reviewers: austin, bgamari, erikd, simonmar
Reviewed By: simonmar
Subscribers: rwbarton, thomie
Differential Revision: https://phabricator.haskell.org/D4099
Diffstat (limited to 'rts')
-rw-r--r-- | rts/PrimOps.cmm | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/rts/PrimOps.cmm b/rts/PrimOps.cmm index bcf7b62fb7..ca519b60e7 100644 --- a/rts/PrimOps.cmm +++ b/rts/PrimOps.cmm @@ -2391,7 +2391,7 @@ stg_noDuplicatezh /* no arg list: explicit stack layout */ stg_getApStackValzh ( P_ ap_stack, W_ offset ) { - if (%INFO_PTR(ap_stack) == stg_AP_STACK_info) { + if (%INFO_PTR(UNTAG(ap_stack)) == stg_AP_STACK_info) { return (1,StgAP_STACK_payload(ap_stack,offset)); } else { return (0,ap_stack); |