summaryrefslogtreecommitdiff
path: root/rts
diff options
context:
space:
mode:
authorJames Clarke <jrtc27@jrtc27.com>2017-10-18 16:33:28 -0400
committerBen Gamari <ben@smart-cactus.org>2017-10-19 16:40:09 -0400
commitb6204f70501ec4ce4015503421c8a83c6f0fa008 (patch)
treee2d5b6daa6738a582700405235cb58a6c7bf6ddd /rts
parent098dc97b80768a6aeabce4eb6d6d7e6e9a9a75b6 (diff)
downloadhaskell-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.cmm2
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);