diff options
author | Sven Tennie <sven.tennie@gmail.com> | 2023-01-21 14:33:23 +0000 |
---|---|---|
committer | Sven Tennie <sven.tennie@gmail.com> | 2023-01-21 14:33:23 +0000 |
commit | bc141e9b3e8bbfebc745d0b7d2c69dc34473df9f (patch) | |
tree | 3063acd49d0de5bcc2c468d8650c27868f0f3600 | |
parent | ba1872a3f951a914916d7d7a8a3187320ff75900 (diff) | |
download | haskell-bc141e9b3e8bbfebc745d0b7d2c69dc34473df9f.tar.gz |
Reduce duplication
-rw-r--r-- | libraries/ghc-heap/cbits/Stack.cmm | 25 |
1 files changed, 9 insertions, 16 deletions
diff --git a/libraries/ghc-heap/cbits/Stack.cmm b/libraries/ghc-heap/cbits/Stack.cmm index 22e43176bd..192a80e44c 100644 --- a/libraries/ghc-heap/cbits/Stack.cmm +++ b/libraries/ghc-heap/cbits/Stack.cmm @@ -141,14 +141,16 @@ getRetFunLargeBitmapzh(P_ stack, W_ offsetWords){ return (stgArrBytes, size); } -// TODO: Use generalized version unpackClosureReferencedByFramezh with offset=0 unpackClosureFromStackFramezh(P_ stack, W_ offsetWords){ - P_ closurePtr, closurePtrPrime; - // TODO: Rename closurePtr -> closurePtrAddr - closurePtr = (StgStack_sp(stack) + WDS(offsetWords)); - closurePtrPrime = P_[closurePtr]; - ASSERT(LOOKS_LIKE_CLOSURE_PTR(closurePtrPrime)); - jump stg_unpackClosurezh(closurePtrPrime); + jump unpackClosureReferencedByFramezh(0, stack, offsetWords); +} + +unpackClosureReferencedByFramezh(W_ offsetBytes, P_ stack, W_ offsetWords){ + P_ closurePtrAddr, closurePtr; + closurePtrAddr = (StgStack_sp(stack) + WDS(offsetWords) + offsetBytes); + closurePtr = P_[closurePtrAddr]; + ASSERT(LOOKS_LIKE_CLOSURE_PTR(closurePtr)); + jump stg_unpackClosurezh(closurePtr); } getUpdateFrameTypezh(P_ stack, W_ offsetWords){ @@ -161,15 +163,6 @@ getUpdateFrameTypezh(P_ stack, W_ offsetWords){ return (type); } -unpackClosureReferencedByFramezh(W_ offsetBytes, P_ stack, W_ offsetWords){ - P_ closurePtr, closurePtrPrime; - // TODO: Rename closurePtr -> closurePtrAddr - closurePtr = (StgStack_sp(stack) + WDS(offsetWords) + offsetBytes); - closurePtrPrime = P_[closurePtr]; - ASSERT(LOOKS_LIKE_CLOSURE_PTR(closurePtrPrime)); - jump stg_unpackClosurezh(closurePtrPrime); -} - getCatchFrameExceptionsBlockedzh(P_ stack, W_ offsetWords){ P_ closurePtr; closurePtr = (StgStack_sp(stack) + WDS(offsetWords)); |