summaryrefslogtreecommitdiff
path: root/rts/ClosureFlags.c
diff options
context:
space:
mode:
Diffstat (limited to 'rts/ClosureFlags.c')
-rw-r--r--rts/ClosureFlags.c107
1 files changed, 107 insertions, 0 deletions
diff --git a/rts/ClosureFlags.c b/rts/ClosureFlags.c
new file mode 100644
index 0000000000..5545693362
--- /dev/null
+++ b/rts/ClosureFlags.c
@@ -0,0 +1,107 @@
+/* -----------------------------------------------------------------------------
+ *
+ * (c) The GHC Team 1998-1999
+ *
+ * Closure type flags
+ *
+ * ---------------------------------------------------------------------------*/
+
+#include "PosixSource.h"
+#include "Rts.h"
+
+StgWord16 closure_flags[] = {
+
+/*
+ * These *must* be in the same order as the closure types in
+ * ClosureTypes.h.
+ */
+
+/* ToDo: some of these flags seem to be duplicated.
+ * - NS is the same as HNF, and the negation of THU
+ * (however, we set NS for indirections, which is probably the
+ * right thing to do, since we never get indirections pointing
+ * to thunks.)
+ */
+
+/* 0 1 2 3 4 5 6 7 */
+/* HNF BTM NS STA THU MUT UPT SRT */
+
+/* INVALID_OBJECT = */ ( 0 ),
+/* CONSTR = */ (_HNF| _NS ),
+/* CONSTR_1_0 = */ (_HNF| _NS ),
+/* CONSTR_0_1 = */ (_HNF| _NS ),
+/* CONSTR_2_0 = */ (_HNF| _NS ),
+/* CONSTR_1_1 = */ (_HNF| _NS ),
+/* CONSTR_0_2 = */ (_HNF| _NS ),
+/* CONSTR_INTLIKE = */ (_HNF| _NS|_STA ),
+/* CONSTR_CHARLIKE = */ (_HNF| _NS|_STA ),
+/* CONSTR_STATIC = */ (_HNF| _NS|_STA ),
+/* CONSTR_NOCAF_STATIC = */ (_HNF| _NS|_STA ),
+/* FUN = */ (_HNF| _NS| _SRT ),
+/* FUN_1_0 = */ (_HNF| _NS| _SRT ),
+/* FUN_0_1 = */ (_HNF| _NS| _SRT ),
+/* FUN_2_0 = */ (_HNF| _NS| _SRT ),
+/* FUN_1_1 = */ (_HNF| _NS| _SRT ),
+/* FUN_0_2 = */ (_HNF| _NS| _SRT ),
+/* FUN_STATIC = */ (_HNF| _NS|_STA| _SRT ),
+/* THUNK = */ ( _BTM| _THU| _SRT ),
+/* THUNK_1_0 = */ ( _BTM| _THU| _SRT ),
+/* THUNK_0_1 = */ ( _BTM| _THU| _SRT ),
+/* THUNK_2_0 = */ ( _BTM| _THU| _SRT ),
+/* THUNK_1_1 = */ ( _BTM| _THU| _SRT ),
+/* THUNK_0_2 = */ ( _BTM| _THU| _SRT ),
+/* THUNK_STATIC = */ ( _BTM| _STA|_THU| _SRT ),
+/* THUNK_SELECTOR = */ ( _BTM| _THU| _SRT ),
+/* BCO = */ (_HNF| _NS ),
+/* AP = */ ( _THU ),
+/* PAP = */ (_HNF| _NS ),
+/* AP_STACK = */ ( _THU ),
+/* IND = */ ( _NS| _IND ),
+/* IND_OLDGEN = */ ( _NS| _IND ),
+/* IND_PERM = */ ( _NS| _IND ),
+/* IND_OLDGEN_PERM = */ ( _NS| _IND ),
+/* IND_STATIC = */ ( _NS|_STA| _IND ),
+/* RET_BCO = */ ( _BTM ),
+/* RET_SMALL = */ ( _BTM| _SRT ),
+/* RET_VEC_SMALL = */ ( _BTM| _SRT ),
+/* RET_BIG = */ ( _SRT ),
+/* RET_VEC_BIG = */ ( _SRT ),
+/* RET_DYN = */ ( _SRT ),
+/* RET_FUN = */ ( 0 ),
+/* UPDATE_FRAME = */ ( _BTM ),
+/* CATCH_FRAME = */ ( _BTM ),
+/* STOP_FRAME = */ ( _BTM ),
+/* CAF_BLACKHOLE = */ ( _BTM|_NS| _UPT ),
+/* BLACKHOLE = */ ( _NS| _UPT ),
+/* SE_BLACKHOLE = */ ( _NS| _UPT ),
+/* SE_CAF_BLACKHOLE = */ ( _NS| _UPT ),
+/* MVAR = */ (_HNF| _NS| _MUT|_UPT ),
+/* ARR_WORDS = */ (_HNF| _NS| _UPT ),
+/* MUT_ARR_PTRS_CLEAN = */ (_HNF| _NS| _MUT|_UPT ),
+/* MUT_ARR_PTRS_DIRTY = */ (_HNF| _NS| _MUT|_UPT ),
+/* MUT_ARR_PTRS_FROZEN0 = */ (_HNF| _NS| _MUT|_UPT ),
+/* MUT_ARR_PTRS_FROZEN = */ (_HNF| _NS| _UPT ),
+/* MUT_VAR_CLEAN = */ (_HNF| _NS| _MUT|_UPT ),
+/* MUT_VAR_DIRTY = */ (_HNF| _NS| _MUT|_UPT ),
+/* WEAK = */ (_HNF| _NS| _UPT ),
+/* STABLE_NAME = */ (_HNF| _NS| _UPT ),
+/* TSO = */ (_HNF| _NS| _MUT|_UPT ),
+/* BLOCKED_FETCH = */ (_HNF| _NS| _MUT|_UPT ),
+/* FETCH_ME = */ (_HNF| _NS| _MUT|_UPT ),
+/* FETCH_ME_BQ = */ ( _NS| _MUT|_UPT ),
+/* RBH = */ ( _NS| _MUT|_UPT ),
+/* EVACUATED = */ ( 0 ),
+/* REMOTE_REF = */ (_HNF| _NS| _UPT ),
+/* TVAR_WAIT_QUEUE = */ ( _NS| _MUT|_UPT ),
+/* TVAR = */ (_HNF| _NS| _MUT|_UPT ),
+/* TREC_CHUNK = */ ( _NS| _MUT|_UPT ),
+/* TREC_HEADER = */ ( _NS| _MUT|_UPT ),
+/* ATOMICALLY_FRAME = */ ( _BTM ),
+/* CATCH_RETRY_FRAME = */ ( _BTM ),
+/* CATCH_STM_FRAME = */ ( _BTM )
+};
+
+#if N_CLOSURE_TYPES != 73
+#error Closure types changed: update ClosureFlags.c!
+#endif
+