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