CmmLayoutStack: Add unwind information on stack fixups
[ghc.git] / rts / ClosureFlags.c
index 5a34c5e..9bf3015 100644 (file)
 
 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
@@ -23,82 +18,75 @@ StgWord16 closure_flags[] = {
  *  to thunks.)
  */
 
-/*                              0    1    2    3    4   5   6   7 */
-/*                           HNF  BTM   NS  STA  THU MUT UPT SRT */
+/*                            0    1    2    4   5    6   7     8 */
+/*                          HNF  BTM   NS  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                        = */ (_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                                  )
+ [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]              =  ( 0                                    ),
+ [RET_SMALL]            =  (     _BTM|                  _SRT      ),
+ [RET_BIG]              =  (                            _SRT      ),
+ [RET_FUN]              =  ( 0                                    ),
+ [UPDATE_FRAME]         =  (     _BTM                             ),
+ [CATCH_FRAME]          =  (     _BTM                             ),
+ [UNDERFLOW_FRAME]      =  (     _BTM                             ),
+ [STOP_FRAME]           =  (     _BTM                             ),
+ [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_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           ),
+ [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                             ),
+ [CATCH_RETRY_FRAME]    =  (     _BTM                             ),
+ [CATCH_STM_FRAME]      =  (     _BTM                             ),
+ [WHITEHOLE]            =  ( 0                                    ),
+ [SMALL_MUT_ARR_PTRS_CLEAN]   =  (_HNF|     _NS|     _MUT|_UPT           ),
+ [SMALL_MUT_ARR_PTRS_DIRTY]   =  (_HNF|     _NS|     _MUT|_UPT           ),
+ [SMALL_MUT_ARR_PTRS_FROZEN0] =  (_HNF|     _NS|     _MUT|_UPT           ),
+ [SMALL_MUT_ARR_PTRS_FROZEN]  =  (_HNF|     _NS|          _UPT           ),
+ [COMPACT_NFDATA]       =  (_HNF|     _NS                              ),
 };
 
-#if N_CLOSURE_TYPES != 71
+#if N_CLOSURE_TYPES != 64
 #error Closure types changed: update ClosureFlags.c!
 #endif