diff options
author | Ben Gamari <ben@smart-cactus.org> | 2022-02-14 13:51:37 -0500 |
---|---|---|
committer | Marge Bot <ben+marge-bot@smart-cactus.org> | 2022-04-22 02:12:59 -0400 |
commit | 1e062a8a220c2fb5d707c7e36c6532d0e16291e9 (patch) | |
tree | 795683c5a8286f28ae849e9b418831a73f8e2493 /rts/include | |
parent | 0481a6af8d5d0279809bd14082d9f2d988da6df2 (diff) | |
download | haskell-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.h | 2 |
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 |