1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
/* -----------------------------------------------------------------------------
*
* (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 8 */
/* HNF BTM NS STA THU MUT UPT SRT IND */
/* 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_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_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_CLEAN = */ (_HNF| _NS| _MUT|_UPT ),
/* MVAR_DIRTY = */ (_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_WATCH_QUEUE = */ ( _NS| _MUT|_UPT ),
/* INVARIANT_CHECK_QUEUE= */ ( _NS| _MUT|_UPT ),
/* ATOMIC_INVARIANT = */ ( _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 != 72
#error Closure types changed: update ClosureFlags.c!
#endif
|