summaryrefslogtreecommitdiff
path: root/rts/include
diff options
context:
space:
mode:
authorBen Gamari <ben@smart-cactus.org>2022-02-14 13:51:37 -0500
committerMarge Bot <ben+marge-bot@smart-cactus.org>2022-04-22 02:12:59 -0400
commit1e062a8a220c2fb5d707c7e36c6532d0e16291e9 (patch)
tree795683c5a8286f28ae849e9b418831a73f8e2493 /rts/include
parent0481a6af8d5d0279809bd14082d9f2d988da6df2 (diff)
downloadhaskell-1e062a8a220c2fb5d707c7e36c6532d0e16291e9.tar.gz
rts: Introduce ip_STACK_FRAME
While debugging it is very useful to be able to determine whether a given info table is a stack frame or not. We have spare bits in the closure flags array anyways, use one for this information.
Diffstat (limited to 'rts/include')
-rw-r--r--rts/include/rts/storage/InfoTables.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/rts/include/rts/storage/InfoTables.h b/rts/include/rts/storage/InfoTables.h
index 55aba6b4d7..b5102c8b8d 100644
--- a/rts/include/rts/storage/InfoTables.h
+++ b/rts/include/rts/storage/InfoTables.h
@@ -62,6 +62,7 @@ typedef struct {
#define _UPT (1<<5) /* unpointed? */
#define _SRT (1<<6) /* has an SRT? */
#define _IND (1<<7) /* is an indirection? */
+#define _FRM (1<<8) /* is a stack frame? */
#define isMUTABLE(flags) ((flags) &_MUT)
#define isBITMAP(flags) ((flags) &_BTM)
@@ -95,6 +96,7 @@ extern StgWord16 closure_flags[];
#define ip_UNPOINTED(ip) ( ipFlags(ip) & _UPT)
#define ip_SRT(ip) ( ipFlags(ip) & _SRT)
#define ip_IND(ip) ( ipFlags(ip) & _IND)
+#define ip_STACK_FRAME(ip) ( ipFlags(ip) & _FRM)
/* -----------------------------------------------------------------------------
Bitmaps