[project @ 2001-03-02 16:12:18 by simonmar]
[ghc-hetmet.git] / ghc / rts / ClosureFlags.c
1 /* -----------------------------------------------------------------------------
2  * $Id: ClosureFlags.c,v 1.8 2001/03/02 16:12:18 simonmar Exp $
3  *
4  * (c) The GHC Team 1998-1999
5  *
6  * Closure type flags
7  *
8  * ---------------------------------------------------------------------------*/
9
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_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           ),
91 [EVACUATED              ] = ( 0                                         ),
92
93 [N_CLOSURE_TYPES        ] = ( 0                                   )
94 };