1 /* -----------------------------------------------------------------------------
2 * $Id: ClosureFlags.c,v 1.9 2001/03/22 03:51:10 hwloidl Exp $
4 * (c) The GHC Team 1998-1999
8 * ---------------------------------------------------------------------------*/
12 StgWord16 closure_flags[] = {
15 * These *must* be in the same order as the closure types in
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
27 /* HNF BTM NS STA THU MUT UPT SRT */
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_INTLIKE ] = (_HNF| _NS|_STA ),
37 [CONSTR_CHARLIKE ] = (_HNF| _NS|_STA ),
38 [CONSTR_STATIC ] = (_HNF| _NS|_STA ),
39 [CONSTR_NOCAF_STATIC ] = (_HNF| _NS|_STA ),
40 [FUN ] = (_HNF| _NS| _SRT ),
41 [FUN_1_0 ] = (_HNF| _NS ),
42 [FUN_0_1 ] = (_HNF| _NS ),
43 [FUN_2_0 ] = (_HNF| _NS ),
44 [FUN_1_1 ] = (_HNF| _NS ),
45 [FUN_0_2 ] = (_HNF| _NS ),
46 [FUN_STATIC ] = (_HNF| _NS|_STA| _SRT ),
47 [THUNK ] = ( _BTM| _THU| _SRT ),
48 [THUNK_1_0 ] = ( _BTM| _THU| _SRT ),
49 [THUNK_0_1 ] = ( _BTM| _THU| _SRT ),
50 [THUNK_2_0 ] = ( _BTM| _THU| _SRT ),
51 [THUNK_1_1 ] = ( _BTM| _THU| _SRT ),
52 [THUNK_0_2 ] = ( _BTM| _THU| _SRT ),
53 [THUNK_STATIC ] = ( _BTM| _STA|_THU| _SRT ),
54 [THUNK_SELECTOR ] = ( _BTM| _THU| _SRT ),
55 [BCO ] = (_HNF| _NS ),
56 [AP_UPD ] = ( _BTM| _THU ),
57 [PAP ] = (_HNF| _NS ),
58 [IND ] = ( _NS |_IND ),
59 [IND_OLDGEN ] = ( _NS |_IND ),
60 [IND_PERM ] = ( _NS |_IND ),
61 [IND_OLDGEN_PERM ] = ( _NS |_IND ),
62 [IND_STATIC ] = ( _NS|_STA |_IND ),
63 [CAF_BLACKHOLE ] = ( _BTM|_NS| _MUT|_UPT ),
64 [RET_BCO ] = ( _BTM ),
65 [RET_SMALL ] = ( _BTM| _SRT ),
66 [RET_VEC_SMALL ] = ( _BTM| _SRT ),
67 [RET_BIG ] = ( _SRT ),
68 [RET_VEC_BIG ] = ( _SRT ),
69 [RET_DYN ] = ( _SRT ),
70 [UPDATE_FRAME ] = ( _BTM ),
71 [CATCH_FRAME ] = ( _BTM ),
72 [STOP_FRAME ] = ( _BTM ),
73 [SEQ_FRAME ] = ( _BTM ),
74 [BLACKHOLE ] = ( _NS| _MUT|_UPT ),
75 [BLACKHOLE_BQ ] = ( _NS| _MUT|_UPT ),
76 [SE_BLACKHOLE ] = ( _NS| _UPT ),
77 [SE_CAF_BLACKHOLE ] = ( _NS| _UPT ),
78 [MVAR ] = (_HNF| _NS| _MUT|_UPT ),
79 [ARR_WORDS ] = (_HNF| _NS| _UPT ),
80 [MUT_ARR_PTRS ] = (_HNF| _NS| _MUT|_UPT ),
81 [MUT_ARR_PTRS_FROZEN ] = (_HNF| _NS| _MUT|_UPT ),
82 [MUT_VAR ] = (_HNF| _NS| _MUT|_UPT ),
83 [WEAK ] = (_HNF| _NS| _UPT ),
84 [FOREIGN ] = (_HNF| _NS| _UPT ),
85 [STABLE_NAME ] = (_HNF| _NS| _UPT ),
86 [TSO ] = (_HNF| _NS| _MUT|_UPT ),
87 [BLOCKED_FETCH ] = (_HNF| _NS| _MUT|_UPT ),
88 [FETCH_ME ] = (_HNF| _NS| _MUT|_UPT ),
89 [FETCH_ME_BQ ] = ( _NS| _MUT|_UPT ),
90 [RBH ] = ( _NS| _MUT|_UPT ),
92 [REMOTE_REF ] = (_HNF| _NS| _UPT ),
94 [N_CLOSURE_TYPES ] = ( 0 )