Remove vectored returns.
[ghc.git] / rts / ClosureFlags.c
1 /* -----------------------------------------------------------------------------
2 *
3 * (c) The GHC Team 1998-1999
4 *
5 * Closure type flags
6 *
7 * ---------------------------------------------------------------------------*/
8
9 #include "PosixSource.h"
10 #include "Rts.h"
11
12 StgWord16 closure_flags[] = {
13
14 /*
15 * These *must* be in the same order as the closure types in
16 * ClosureTypes.h.
17 */
18
19 /* ToDo: some of these flags seem to be duplicated.
20 * - NS is the same as HNF, and the negation of THU
21 * (however, we set NS for indirections, which is probably the
22 * right thing to do, since we never get indirections pointing
23 * to thunks.)
24 */
25
26 /* 0 1 2 3 4 5 6 7 */
27 /* HNF BTM NS STA THU MUT UPT SRT */
28
29 /* INVALID_OBJECT = */ ( 0 ),
30 /* CONSTR = */ (_HNF| _NS ),
31 /* CONSTR_1_0 = */ (_HNF| _NS ),
32 /* CONSTR_0_1 = */ (_HNF| _NS ),
33 /* CONSTR_2_0 = */ (_HNF| _NS ),
34 /* CONSTR_1_1 = */ (_HNF| _NS ),
35 /* CONSTR_0_2 = */ (_HNF| _NS ),
36 /* CONSTR_STATIC = */ (_HNF| _NS|_STA ),
37 /* CONSTR_NOCAF_STATIC = */ (_HNF| _NS|_STA ),
38 /* FUN = */ (_HNF| _NS| _SRT ),
39 /* FUN_1_0 = */ (_HNF| _NS| _SRT ),
40 /* FUN_0_1 = */ (_HNF| _NS| _SRT ),
41 /* FUN_2_0 = */ (_HNF| _NS| _SRT ),
42 /* FUN_1_1 = */ (_HNF| _NS| _SRT ),
43 /* FUN_0_2 = */ (_HNF| _NS| _SRT ),
44 /* FUN_STATIC = */ (_HNF| _NS|_STA| _SRT ),
45 /* THUNK = */ ( _BTM| _THU| _SRT ),
46 /* THUNK_1_0 = */ ( _BTM| _THU| _SRT ),
47 /* THUNK_0_1 = */ ( _BTM| _THU| _SRT ),
48 /* THUNK_2_0 = */ ( _BTM| _THU| _SRT ),
49 /* THUNK_1_1 = */ ( _BTM| _THU| _SRT ),
50 /* THUNK_0_2 = */ ( _BTM| _THU| _SRT ),
51 /* THUNK_STATIC = */ ( _BTM| _STA|_THU| _SRT ),
52 /* THUNK_SELECTOR = */ ( _BTM| _THU| _SRT ),
53 /* BCO = */ (_HNF| _NS ),
54 /* AP = */ ( _THU ),
55 /* PAP = */ (_HNF| _NS ),
56 /* AP_STACK = */ ( _THU ),
57 /* IND = */ ( _NS| _IND ),
58 /* IND_OLDGEN = */ ( _NS| _IND ),
59 /* IND_PERM = */ ( _NS| _IND ),
60 /* IND_OLDGEN_PERM = */ ( _NS| _IND ),
61 /* IND_STATIC = */ ( _NS|_STA| _IND ),
62 /* RET_BCO = */ ( _BTM ),
63 /* RET_SMALL = */ ( _BTM| _SRT ),
64 /* RET_BIG = */ ( _SRT ),
65 /* RET_DYN = */ ( _SRT ),
66 /* RET_FUN = */ ( 0 ),
67 /* UPDATE_FRAME = */ ( _BTM ),
68 /* CATCH_FRAME = */ ( _BTM ),
69 /* STOP_FRAME = */ ( _BTM ),
70 /* CAF_BLACKHOLE = */ ( _BTM|_NS| _UPT ),
71 /* BLACKHOLE = */ ( _NS| _UPT ),
72 /* SE_BLACKHOLE = */ ( _NS| _UPT ),
73 /* SE_CAF_BLACKHOLE = */ ( _NS| _UPT ),
74 /* MVAR = */ (_HNF| _NS| _MUT|_UPT ),
75 /* ARR_WORDS = */ (_HNF| _NS| _UPT ),
76 /* MUT_ARR_PTRS_CLEAN = */ (_HNF| _NS| _MUT|_UPT ),
77 /* MUT_ARR_PTRS_DIRTY = */ (_HNF| _NS| _MUT|_UPT ),
78 /* MUT_ARR_PTRS_FROZEN0 = */ (_HNF| _NS| _MUT|_UPT ),
79 /* MUT_ARR_PTRS_FROZEN = */ (_HNF| _NS| _UPT ),
80 /* MUT_VAR_CLEAN = */ (_HNF| _NS| _MUT|_UPT ),
81 /* MUT_VAR_DIRTY = */ (_HNF| _NS| _MUT|_UPT ),
82 /* WEAK = */ (_HNF| _NS| _UPT ),
83 /* STABLE_NAME = */ (_HNF| _NS| _UPT ),
84 /* TSO = */ (_HNF| _NS| _MUT|_UPT ),
85 /* BLOCKED_FETCH = */ (_HNF| _NS| _MUT|_UPT ),
86 /* FETCH_ME = */ (_HNF| _NS| _MUT|_UPT ),
87 /* FETCH_ME_BQ = */ ( _NS| _MUT|_UPT ),
88 /* RBH = */ ( _NS| _MUT|_UPT ),
89 /* EVACUATED = */ ( 0 ),
90 /* REMOTE_REF = */ (_HNF| _NS| _UPT ),
91 /* TVAR_WATCH_QUEUE = */ ( _NS| _MUT|_UPT ),
92 /* INVARIANT_CHECK_QUEUE= */ ( _NS| _MUT|_UPT ),
93 /* ATOMIC_INVARIANT = */ ( _NS| _MUT|_UPT ),
94 /* TVAR = */ (_HNF| _NS| _MUT|_UPT ),
95 /* TREC_CHUNK = */ ( _NS| _MUT|_UPT ),
96 /* TREC_HEADER = */ ( _NS| _MUT|_UPT ),
97 /* ATOMICALLY_FRAME = */ ( _BTM ),
98 /* CATCH_RETRY_FRAME = */ ( _BTM ),
99 /* CATCH_STM_FRAME = */ ( _BTM )
100 };
101
102 #if N_CLOSURE_TYPES != 71
103 #error Closure types changed: update ClosureFlags.c!
104 #endif