[project @ 2004-02-12 02:04:59 by mthomas]
[ghc-hetmet.git] / ghc / rts / ClosureFlags.c
1 /* -----------------------------------------------------------------------------
2  * $Id: ClosureFlags.c,v 1.13 2002/12/11 15:36:41 simonmar 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|                  _SRT       ),
43 /* FUN_0_1              = */ (_HNF|     _NS|                  _SRT       ),
44 /* FUN_2_0              = */ (_HNF|     _NS|                  _SRT       ),
45 /* FUN_1_1              = */ (_HNF|     _NS|                  _SRT       ),
46 /* FUN_0_2              = */ (_HNF|     _NS|                  _SRT       ),
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                   = */ (                   _THU                    ),
58 /* PAP                  = */ (_HNF|     _NS                              ),
59 /* AP_STACK             = */ (                   _THU                    ),
60 /* IND                  = */ (          _NS|                        _IND ),
61 /* IND_OLDGEN           = */ (          _NS|                        _IND ),
62 /* IND_PERM             = */ (          _NS|                        _IND ),
63 /* IND_OLDGEN_PERM      = */ (          _NS|                        _IND ),
64 /* IND_STATIC           = */ (          _NS|_STA|                   _IND ),
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 /* RET_FUN              = */ ( 0                                         ),
72 /* UPDATE_FRAME         = */ (     _BTM                                  ),
73 /* CATCH_FRAME          = */ (     _BTM                                  ),
74 /* STOP_FRAME           = */ (     _BTM                                  ),
75 /* CAF_BLACKHOLE        = */ (     _BTM|_NS|              _UPT           ),
76 /* BLACKHOLE            = */ (          _NS|              _UPT           ),
77 /* BLACKHOLE_BQ         = */ (          _NS|         _MUT|_UPT           ),
78 /* SE_BLACKHOLE         = */ (          _NS|              _UPT           ),
79 /* SE_CAF_BLACKHOLE     = */ (          _NS|              _UPT           ),
80 /* MVAR                 = */ (_HNF|     _NS|         _MUT|_UPT           ),
81 /* ARR_WORDS            = */ (_HNF|     _NS|              _UPT           ),
82 /* MUT_ARR_PTRS         = */ (_HNF|     _NS|         _MUT|_UPT           ),
83 /* MUT_ARR_PTRS_FROZEN  = */ (_HNF|     _NS|              _UPT           ),
84 /* MUT_VAR              = */ (_HNF|     _NS|         _MUT|_UPT           ),
85 /* MUT_CONS             = */ (_HNF|     _NS|              _UPT           ),
86 /* WEAK                 = */ (_HNF|     _NS|              _UPT           ),
87 /* FOREIGN              = */ (_HNF|     _NS|              _UPT           ),
88 /* STABLE_NAME          = */ (_HNF|     _NS|              _UPT           ),
89 /* TSO                  = */ (_HNF|     _NS|         _MUT|_UPT           ),
90 /* BLOCKED_FETCH        = */ (_HNF|     _NS|         _MUT|_UPT           ),
91 /* FETCH_ME             = */ (_HNF|     _NS|         _MUT|_UPT           ),
92 /* FETCH_ME_BQ          = */ (          _NS|         _MUT|_UPT           ),
93 /* RBH                  = */ (          _NS|         _MUT|_UPT           ),
94 /* EVACUATED            = */ ( 0                                         ),
95 /* REMOTE_REF           = */ (_HNF|     _NS|              _UPT           ),
96 /* STACK                = */ (_HNF|     _NS|         _MUT                )
97 };