diff options
author | Sven Tennie <sven.tennie@gmail.com> | 2021-04-03 19:35:34 +0200 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2021-09-23 15:59:38 -0400 |
commit | 29717ecb0711cd03796510fbe9b4bff58c7da870 (patch) | |
tree | 850a449ef01caeedf8fd8e9156e7eedcd5a028ce /compiler/GHC/Builtin | |
parent | 6f7f59901c047882ba8c9ae8812264f86b12483a (diff) | |
download | haskell-29717ecb0711cd03796510fbe9b4bff58c7da870.tar.gz |
Use Info Table Provenances to decode cloned stack (#18163)
Emit an Info Table Provenance Entry (IPE) for every stack represeted info table
if -finfo-table-map is turned on.
To decode a cloned stack, lookupIPE() is used. It provides a mapping between
info tables and their source location.
Please see these notes for details:
- [Stacktraces from Info Table Provenance Entries (IPE based stack unwinding)]
- [Mapping Info Tables to Source Positions]
Metric Increase:
T12545
Diffstat (limited to 'compiler/GHC/Builtin')
-rw-r--r-- | compiler/GHC/Builtin/primops.txt.pp | 16 |
1 files changed, 3 insertions, 13 deletions
diff --git a/compiler/GHC/Builtin/primops.txt.pp b/compiler/GHC/Builtin/primops.txt.pp index 58d4ec91f3..2aa1eefb4b 100644 --- a/compiler/GHC/Builtin/primops.txt.pp +++ b/compiler/GHC/Builtin/primops.txt.pp @@ -3648,19 +3648,9 @@ primop SetThreadAllocationCounter "setThreadAllocationCounter#" GenPrimOp out_of_line = True primtype StackSnapshot# - -primop CloneMyStack "cloneMyStack#" GenPrimOp - State# RealWorld -> (# State# RealWorld, StackSnapshot# #) - { Clones the stack of the current (active) Haskell thread. A cloned stack is - represented by {\tt StackSnapshot# } and is not evaluated any further - (i.e. it's "cold"). This is useful for stack decoding (backtraces) and - analyses because there are no concurrent mutations on a cloned stack. - The module {\tt GHC.Stack.CloneStack } contains related funcions. - Please see Note [Stack Cloning] for technical details. } - with - has_side_effects = True - out_of_line = True - + { Haskell representation of a {\tt StgStack*} that was created (cloned) + with a function in {\tt GHC.Stack.CloneStack}. Please check the + documentation in this module for more detailed explanations. } ------------------------------------------------------------------------ section "Safe coercions" |