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
|
/* -----------------------------------------------------------------------------
*
* (c) The GHC Team 1998-1999
*
* Closure type flags
*
* ---------------------------------------------------------------------------*/
#include "rts/PosixSource.h"
#include "Rts.h"
const StgWord16 closure_flags[] = {
/* 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.)
*/
/* See InfoTables.h for the meaning of these flags */
/* 0 1 2 4 5 6 7 8 9 */
/* HNF BTM NS THU MUT UPT SRT IND FRM */
[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_NOCAF] = (_HNF| _NS ),
[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| _SRT ),
[THUNK] = ( _THU| _SRT ),
[THUNK_1_0] = ( _THU| _SRT ),
[THUNK_0_1] = ( _THU| _SRT ),
[THUNK_2_0] = ( _THU| _SRT ),
[THUNK_1_1] = ( _THU| _SRT ),
[THUNK_0_2] = ( _THU| _SRT ),
[THUNK_STATIC] = ( _THU| _SRT ),
[THUNK_SELECTOR] = ( _THU| _SRT ),
[BCO] = (_HNF| _NS ),
[AP] = ( _THU ),
[PAP] = (_HNF| _NS ),
[AP_STACK] = ( _THU ),
[IND] = ( _NS| _IND ),
[IND_STATIC] = ( _NS| _IND ),
[RET_BCO] = ( _FRM ),
[RET_SMALL] = ( _BTM| _SRT| _FRM ),
[RET_BIG] = ( _SRT| _FRM ),
[RET_FUN] = ( _FRM ),
[UPDATE_FRAME] = ( _BTM| _FRM ),
[CATCH_FRAME] = ( _BTM| _FRM ),
[UNDERFLOW_FRAME] = ( _BTM| _FRM ),
[STOP_FRAME] = ( _BTM| _FRM ),
[BLACKHOLE] = ( _NS| _UPT ),
[BLOCKING_QUEUE] = ( _NS| _MUT|_UPT ),
[MVAR_CLEAN] = (_HNF| _NS| _MUT|_UPT ),
[MVAR_DIRTY] = (_HNF| _NS| _MUT|_UPT ),
[TVAR] = (_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_FROZEN_DIRTY] = (_HNF| _NS| _MUT|_UPT ),
[MUT_ARR_PTRS_FROZEN_CLEAN] = (_HNF| _NS| _UPT ),
[MUT_VAR_CLEAN] = (_HNF| _NS| _MUT|_UPT ),
[MUT_VAR_DIRTY] = (_HNF| _NS| _MUT|_UPT ),
[WEAK] = (_HNF| _NS| _UPT ),
[PRIM] = (_HNF| _NS| _UPT ),
[MUT_PRIM] = (_HNF| _NS| _MUT|_UPT ),
[TSO] = (_HNF| _NS| _MUT|_UPT ),
[STACK] = (_HNF| _NS| _MUT|_UPT ),
[TREC_CHUNK] = ( _NS| _MUT|_UPT ),
[ATOMICALLY_FRAME] = ( _BTM| _FRM ),
[CATCH_RETRY_FRAME] = ( _BTM| _FRM ),
[CATCH_STM_FRAME] = ( _BTM| _FRM ),
[WHITEHOLE] = ( 0 ),
[SMALL_MUT_ARR_PTRS_CLEAN] = (_HNF| _NS| _MUT|_UPT ),
[SMALL_MUT_ARR_PTRS_DIRTY] = (_HNF| _NS| _MUT|_UPT ),
[SMALL_MUT_ARR_PTRS_FROZEN_DIRTY] = (_HNF| _NS| _MUT|_UPT ),
[SMALL_MUT_ARR_PTRS_FROZEN_CLEAN] = (_HNF| _NS| _UPT ),
[COMPACT_NFDATA] = (_HNF| _NS ),
[CONTINUATION] = (_HNF| _NS| _UPT ),
};
#if N_CLOSURE_TYPES != 65
#error Closure types changed: update ClosureFlags.c!
#endif
|