X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=includes%2Fstg%2FMiscClosures.h;h=8a1b84a5cc71be66a6c5d9e4c0541f46f8d2ec58;hb=9ba922ee06b048774d7a82964867ff768a78126e;hp=1591570780edb5ce6c8fb7a3217e9191e93d36cb;hpb=a2a67cd520b9841114d69a87a423dabcb3b4368e;p=ghc-hetmet.git diff --git a/includes/stg/MiscClosures.h b/includes/stg/MiscClosures.h index 1591570..8a1b84a 100644 --- a/includes/stg/MiscClosures.h +++ b/includes/stg/MiscClosures.h @@ -1,6 +1,6 @@ /* ---------------------------------------------------------------------------- * - * (c) The GHC Team, 1998-2004 + * (c) The GHC Team, 1998-2009 * * Declarations for various symbols exported by the RTS. * @@ -10,6 +10,11 @@ * * See wiki:Commentary/Compiler/Backends/PprC#Prototypes * + * Do not #include this file directly: #include "Rts.h" instead. + * + * To understand the structure of the RTS headers, see the wiki: + * http://hackage.haskell.org/trac/ghc/wiki/Commentary/SourceTree/Includes + * * --------------------------------------------------------------------------*/ #ifndef STGMISCCLOSURES_H @@ -21,35 +26,41 @@ # define RTS_THUNK_INFO(i) extern W_(i)[] # define RTS_INFO(i) extern W_(i)[] # define RTS_CLOSURE(i) extern W_(i)[] -# define RTS_FUN(f) extern DLL_IMPORT_RTS StgFunPtr f(void) +# define RTS_FUN_DECL(f) extern DLL_IMPORT_RTS StgFunPtr f(void) #else # define RTS_RET_INFO(i) extern DLL_IMPORT_RTS const StgRetInfoTable i # define RTS_FUN_INFO(i) extern DLL_IMPORT_RTS const StgFunInfoTable i # define RTS_THUNK_INFO(i) extern DLL_IMPORT_RTS const StgThunkInfoTable i # define RTS_INFO(i) extern DLL_IMPORT_RTS const StgInfoTable i # define RTS_CLOSURE(i) extern DLL_IMPORT_RTS StgClosure i -# define RTS_FUN(f) extern DLL_IMPORT_RTS StgFunPtr f(void) +# define RTS_FUN_DECL(f) extern DLL_IMPORT_RTS StgFunPtr f(void) #endif #ifdef TABLES_NEXT_TO_CODE -# define RTS_ENTRY(f) /* nothing */ +# define RTS_RET(f) RTS_INFO(f##_info) +# define RTS_ENTRY(f) RTS_INFO(f##_info) +# define RTS_FUN(f) RTS_FUN_INFO(f##_info) +# define RTS_THUNK(f) RTS_THUNK_INFO(f##_info) #else -# define RTS_ENTRY(f) RTS_FUN(f) +# define RTS_RET(f) RTS_INFO(f##_info); RTS_FUN_DECL(f##_ret) +# define RTS_ENTRY(f) RTS_INFO(f##_info); RTS_FUN_DECL(f##_entry) +# define RTS_FUN(f) RTS_FUN_INFO(f##_info); RTS_FUN_DECL(f##_entry) +# define RTS_THUNK(f) RTS_THUNK_INFO(f##_info); RTS_FUN_DECL(f##_entry) #endif /* Stack frames */ -RTS_RET_INFO(stg_upd_frame_info); -RTS_RET_INFO(stg_marked_upd_frame_info); -RTS_RET_INFO(stg_noupd_frame_info); -RTS_RET_INFO(stg_catch_frame_info); -RTS_RET_INFO(stg_catch_retry_frame_info); -RTS_RET_INFO(stg_atomically_frame_info); -RTS_RET_INFO(stg_atomically_waiting_frame_info); -RTS_RET_INFO(stg_catch_stm_frame_info); -RTS_RET_INFO(stg_unblockAsyncExceptionszh_ret_info); - -RTS_ENTRY(stg_upd_frame_ret); -RTS_ENTRY(stg_marked_upd_frame_ret); +RTS_RET(stg_upd_frame); +RTS_RET(stg_bh_upd_frame); +RTS_RET(stg_marked_upd_frame); +RTS_RET(stg_noupd_frame); +RTS_RET(stg_catch_frame); +RTS_RET(stg_catch_retry_frame); +RTS_RET(stg_atomically_frame); +RTS_RET(stg_atomically_waiting_frame); +RTS_RET(stg_catch_stm_frame); +RTS_RET(stg_unmaskAsyncExceptionszh_ret); +RTS_RET(stg_maskUninterruptiblezh_ret); +RTS_RET(stg_maskAsyncExceptionszh_ret); // RTS_FUN(stg_interp_constr_entry); // @@ -60,135 +71,67 @@ RTS_ENTRY(stg_marked_upd_frame_ret); /* Magic glue code for when compiled code returns a value in R1/F1/D1 or a VoidRep to the interpreter. */ -RTS_RET_INFO(stg_ctoi_R1p_info); -RTS_RET_INFO(stg_ctoi_R1unpt_info); -RTS_RET_INFO(stg_ctoi_R1n_info); -RTS_RET_INFO(stg_ctoi_F1_info); -RTS_RET_INFO(stg_ctoi_D1_info); -RTS_RET_INFO(stg_ctoi_L1_info); -RTS_RET_INFO(stg_ctoi_V_info); - -RTS_ENTRY(stg_ctoi_R1p_ret); -RTS_ENTRY(stg_ctoi_R1unpt_ret); -RTS_ENTRY(stg_ctoi_R1n_ret); -RTS_ENTRY(stg_ctoi_F1_ret); -RTS_ENTRY(stg_ctoi_D1_ret); -RTS_ENTRY(stg_ctoi_L1_ret); -RTS_ENTRY(stg_ctoi_V_ret); - -RTS_RET_INFO(stg_apply_interp_info); -RTS_ENTRY(stg_apply_interp_ret); - -RTS_INFO(stg_IND_info); -RTS_INFO(stg_IND_direct_info); -RTS_INFO(stg_IND_STATIC_info); -RTS_INFO(stg_IND_PERM_info); -RTS_INFO(stg_IND_OLDGEN_info); -RTS_INFO(stg_IND_OLDGEN_PERM_info); -RTS_INFO(stg_CAF_UNENTERED_info); -RTS_INFO(stg_CAF_ENTERED_info); -RTS_INFO(stg_WHITEHOLE_info); -RTS_INFO(stg_BLACKHOLE_info); -RTS_INFO(__stg_EAGER_BLACKHOLE_info); -RTS_INFO(stg_CAF_BLACKHOLE_info); - -RTS_FUN_INFO(stg_BCO_info); -RTS_INFO(stg_EVACUATED_info); -RTS_INFO(stg_WEAK_info); -RTS_INFO(stg_DEAD_WEAK_info); -RTS_INFO(stg_STABLE_NAME_info); -RTS_INFO(stg_MVAR_CLEAN_info); -RTS_INFO(stg_MVAR_DIRTY_info); -RTS_INFO(stg_TSO_info); -RTS_INFO(stg_ARR_WORDS_info); -RTS_INFO(stg_MUT_ARR_WORDS_info); -RTS_INFO(stg_MUT_ARR_PTRS_CLEAN_info); -RTS_INFO(stg_MUT_ARR_PTRS_DIRTY_info); -RTS_INFO(stg_MUT_ARR_PTRS_FROZEN_info); -RTS_INFO(stg_MUT_ARR_PTRS_FROZEN0_info); -RTS_INFO(stg_MUT_VAR_CLEAN_info); -RTS_INFO(stg_MUT_VAR_DIRTY_info); -RTS_INFO(stg_END_TSO_QUEUE_info); -RTS_INFO(stg_MUT_CONS_info); -RTS_INFO(stg_catch_info); -RTS_INFO(stg_PAP_info); -RTS_INFO(stg_AP_info); -RTS_INFO(stg_AP_NOUPD_info); -RTS_INFO(stg_AP_STACK_info); -RTS_INFO(stg_dummy_ret_info); -RTS_INFO(stg_raise_info); -RTS_INFO(stg_raise_ret_info); -RTS_INFO(stg_TVAR_WATCH_QUEUE_info); -RTS_INFO(stg_INVARIANT_CHECK_QUEUE_info); -RTS_INFO(stg_ATOMIC_INVARIANT_info); -RTS_INFO(stg_TVAR_info); -RTS_INFO(stg_TREC_CHUNK_info); -RTS_INFO(stg_TREC_HEADER_info); -RTS_INFO(stg_END_STM_WATCH_QUEUE_info); -RTS_INFO(stg_END_INVARIANT_CHECK_QUEUE_info); -RTS_INFO(stg_END_STM_CHUNK_LIST_info); -RTS_INFO(stg_NO_TREC_info); - -RTS_ENTRY(stg_IND_entry); -RTS_ENTRY(stg_IND_direct_entry); -RTS_ENTRY(stg_IND_STATIC_entry); -RTS_ENTRY(stg_IND_PERM_entry); -RTS_ENTRY(stg_IND_OLDGEN_entry); -RTS_ENTRY(stg_IND_OLDGEN_PERM_entry); -RTS_ENTRY(stg_CAF_UNENTERED_entry); -RTS_ENTRY(stg_CAF_ENTERED_entry); -RTS_ENTRY(stg_WHITEHOLE_entry); -RTS_ENTRY(stg_BLACKHOLE_entry); -RTS_ENTRY(__stg_EAGER_BLACKHOLE_entry); -RTS_ENTRY(stg_CAF_BLACKHOLE_entry); -RTS_ENTRY(stg_BCO_entry); -RTS_ENTRY(stg_EVACUATED_entry); -RTS_ENTRY(stg_WEAK_entry); -RTS_ENTRY(stg_DEAD_WEAK_entry); -RTS_ENTRY(stg_STABLE_NAME_entry); -RTS_ENTRY(stg_FULL_MVAR_entry); -RTS_ENTRY(stg_EMPTY_MVAR_entry); -RTS_ENTRY(stg_TSO_entry); -RTS_ENTRY(stg_ARR_WORDS_entry); -RTS_ENTRY(stg_MUT_ARR_WORDS_entry); -RTS_ENTRY(stg_MUT_ARR_PTRS_CLEAN_entry); -RTS_ENTRY(stg_MUT_ARR_PTRS_DIRTY_entry); -RTS_ENTRY(stg_MUT_ARR_PTRS_FROZEN_entry); -RTS_ENTRY(stg_MUT_ARR_PTRS_FROZEN0_entry); -RTS_ENTRY(stg_MUT_VAR_CLEAN_entry); -RTS_ENTRY(stg_MUT_VAR_DIRTY_entry); -RTS_ENTRY(stg_END_TSO_QUEUE_entry); -RTS_ENTRY(stg_MUT_CONS_entry); -RTS_ENTRY(stg_catch_entry); -RTS_ENTRY(stg_PAP_entry); -RTS_ENTRY(stg_AP_entry); -RTS_ENTRY(stg_AP_NOUPD_entry); -RTS_ENTRY(stg_AP_STACK_entry); -RTS_ENTRY(stg_dummy_ret_entry); -RTS_ENTRY(stg_raise_entry); -RTS_ENTRY(stg_raise_ret_ret); -RTS_ENTRY(stg_END_STM_WATCH_QUEUE_entry); -RTS_ENTRY(stg_END_INVARIANT_CHECK_QUEUE_entry); -RTS_ENTRY(stg_END_STM_CHUNK_LIST_entry); -RTS_ENTRY(stg_NO_TREC_entry); -RTS_ENTRY(stg_TVAR_entry); -RTS_ENTRY(stg_TVAR_WATCH_QUEUE_entry); -RTS_ENTRY(stg_INVARIANT_CHECK_QUEUE_entry); -RTS_ENTRY(stg_ATOMIC_INVARIANT_entry); -RTS_ENTRY(stg_TREC_CHUNK_entry); -RTS_ENTRY(stg_TREC_HEADER_entry); - - -RTS_ENTRY(stg_unblockAsyncExceptionszh_ret_ret); -RTS_ENTRY(stg_blockAsyncExceptionszh_ret_ret); -RTS_ENTRY(stg_catch_frame_ret); -RTS_ENTRY(stg_catch_retry_frame_ret); -RTS_ENTRY(stg_atomically_frame_ret); -RTS_ENTRY(stg_atomically_waiting_frame_ret); -RTS_ENTRY(stg_catch_stm_frame_ret); -RTS_ENTRY(stg_catch_frame_ret); -RTS_ENTRY(stg_catch_entry); -RTS_ENTRY(stg_raise_entry); +RTS_RET(stg_ctoi_R1p); +RTS_RET(stg_ctoi_R1unpt); +RTS_RET(stg_ctoi_R1n); +RTS_RET(stg_ctoi_F1); +RTS_RET(stg_ctoi_D1); +RTS_RET(stg_ctoi_L1); +RTS_RET(stg_ctoi_V); + +RTS_RET(stg_apply_interp); + +RTS_ENTRY(stg_IND); +RTS_ENTRY(stg_IND_direct); +RTS_ENTRY(stg_IND_STATIC); +RTS_ENTRY(stg_IND_PERM); +RTS_ENTRY(stg_BLACKHOLE); +RTS_ENTRY(stg_CAF_BLACKHOLE); +RTS_ENTRY(__stg_EAGER_BLACKHOLE); +RTS_ENTRY(stg_WHITEHOLE); +RTS_ENTRY(stg_BLOCKING_QUEUE_CLEAN); +RTS_ENTRY(stg_BLOCKING_QUEUE_DIRTY); + +RTS_FUN(stg_BCO); +RTS_ENTRY(stg_EVACUATED); +RTS_ENTRY(stg_WEAK); +RTS_ENTRY(stg_DEAD_WEAK); +RTS_ENTRY(stg_STABLE_NAME); +RTS_ENTRY(stg_MVAR_CLEAN); +RTS_ENTRY(stg_MVAR_DIRTY); +RTS_ENTRY(stg_TSO); +RTS_ENTRY(stg_ARR_WORDS); +RTS_ENTRY(stg_MUT_ARR_WORDS); +RTS_ENTRY(stg_MUT_ARR_PTRS_CLEAN); +RTS_ENTRY(stg_MUT_ARR_PTRS_DIRTY); +RTS_ENTRY(stg_MUT_ARR_PTRS_FROZEN); +RTS_ENTRY(stg_MUT_ARR_PTRS_FROZEN0); +RTS_ENTRY(stg_MUT_VAR_CLEAN); +RTS_ENTRY(stg_MUT_VAR_DIRTY); +RTS_ENTRY(stg_END_TSO_QUEUE); +RTS_ENTRY(stg_MSG_TRY_WAKEUP); +RTS_ENTRY(stg_MSG_THROWTO); +RTS_ENTRY(stg_MSG_BLACKHOLE); +RTS_ENTRY(stg_MSG_NULL); +RTS_ENTRY(stg_MVAR_TSO_QUEUE); +RTS_ENTRY(stg_catch); +RTS_ENTRY(stg_PAP); +RTS_ENTRY(stg_AP); +RTS_ENTRY(stg_AP_NOUPD); +RTS_ENTRY(stg_AP_STACK); +RTS_ENTRY(stg_dummy_ret); +RTS_ENTRY(stg_raise); +RTS_ENTRY(stg_raise_ret); +RTS_ENTRY(stg_TVAR_WATCH_QUEUE); +RTS_ENTRY(stg_INVARIANT_CHECK_QUEUE); +RTS_ENTRY(stg_ATOMIC_INVARIANT); +RTS_ENTRY(stg_TVAR); +RTS_ENTRY(stg_TREC_CHUNK); +RTS_ENTRY(stg_TREC_HEADER); +RTS_ENTRY(stg_END_STM_WATCH_QUEUE); +RTS_ENTRY(stg_END_INVARIANT_CHECK_QUEUE); +RTS_ENTRY(stg_END_STM_CHUNK_LIST); +RTS_ENTRY(stg_NO_TREC); /* closures */ @@ -203,8 +146,6 @@ RTS_CLOSURE(stg_END_STM_CHUNK_LIST_closure); RTS_CLOSURE(stg_NO_TREC_closure); RTS_ENTRY(stg_NO_FINALIZER_entry); -RTS_ENTRY(stg_END_EXCEPTION_LIST_entry); -RTS_ENTRY(stg_EXCEPTION_CONS_entry); #if IN_STG_CODE extern DLL_IMPORT_RTS StgWordArray stg_CHARLIKE_closure; @@ -216,383 +157,295 @@ extern DLL_IMPORT_RTS StgIntCharlikeClosure stg_INTLIKE_closure[]; /* StgStartup */ -RTS_RET_INFO(stg_forceIO_info); -RTS_ENTRY(stg_forceIO_ret); - -RTS_RET_INFO(stg_noforceIO_info); -RTS_ENTRY(stg_noforceIO_ret); +RTS_RET(stg_forceIO); +RTS_RET(stg_noforceIO); /* standard entry points */ /* standard selector thunks */ -RTS_ENTRY(stg_sel_ret_0_upd_ret); -RTS_ENTRY(stg_sel_ret_1_upd_ret); -RTS_ENTRY(stg_sel_ret_2_upd_ret); -RTS_ENTRY(stg_sel_ret_3_upd_ret); -RTS_ENTRY(stg_sel_ret_4_upd_ret); -RTS_ENTRY(stg_sel_ret_5_upd_ret); -RTS_ENTRY(stg_sel_ret_6_upd_ret); -RTS_ENTRY(stg_sel_ret_7_upd_ret); -RTS_ENTRY(stg_sel_ret_8_upd_ret); -RTS_ENTRY(stg_sel_ret_8_upd_ret); -RTS_ENTRY(stg_sel_ret_9_upd_ret); -RTS_ENTRY(stg_sel_ret_10_upd_ret); -RTS_ENTRY(stg_sel_ret_11_upd_ret); -RTS_ENTRY(stg_sel_ret_12_upd_ret); -RTS_ENTRY(stg_sel_ret_13_upd_ret); -RTS_ENTRY(stg_sel_ret_14_upd_ret); -RTS_ENTRY(stg_sel_ret_15_upd_ret); - -RTS_INFO(stg_sel_0_upd_info); -RTS_INFO(stg_sel_1_upd_info); -RTS_INFO(stg_sel_2_upd_info); -RTS_INFO(stg_sel_3_upd_info); -RTS_INFO(stg_sel_4_upd_info); -RTS_INFO(stg_sel_5_upd_info); -RTS_INFO(stg_sel_6_upd_info); -RTS_INFO(stg_sel_7_upd_info); -RTS_INFO(stg_sel_8_upd_info); -RTS_INFO(stg_sel_9_upd_info); -RTS_INFO(stg_sel_10_upd_info); -RTS_INFO(stg_sel_11_upd_info); -RTS_INFO(stg_sel_12_upd_info); -RTS_INFO(stg_sel_13_upd_info); -RTS_INFO(stg_sel_14_upd_info); -RTS_INFO(stg_sel_15_upd_info); - -RTS_ENTRY(stg_sel_0_upd_entry); -RTS_ENTRY(stg_sel_1_upd_entry); -RTS_ENTRY(stg_sel_2_upd_entry); -RTS_ENTRY(stg_sel_3_upd_entry); -RTS_ENTRY(stg_sel_4_upd_entry); -RTS_ENTRY(stg_sel_5_upd_entry); -RTS_ENTRY(stg_sel_6_upd_entry); -RTS_ENTRY(stg_sel_7_upd_entry); -RTS_ENTRY(stg_sel_8_upd_entry); -RTS_ENTRY(stg_sel_9_upd_entry); -RTS_ENTRY(stg_sel_10_upd_entry); -RTS_ENTRY(stg_sel_11_upd_entry); -RTS_ENTRY(stg_sel_12_upd_entry); -RTS_ENTRY(stg_sel_13_upd_entry); -RTS_ENTRY(stg_sel_14_upd_entry); -RTS_ENTRY(stg_sel_15_upd_entry); - -RTS_ENTRY(stg_sel_ret_0_noupd_ret); -RTS_ENTRY(stg_sel_ret_1_noupd_ret); -RTS_ENTRY(stg_sel_ret_2_noupd_ret); -RTS_ENTRY(stg_sel_ret_3_noupd_ret); -RTS_ENTRY(stg_sel_ret_4_noupd_ret); -RTS_ENTRY(stg_sel_ret_5_noupd_ret); -RTS_ENTRY(stg_sel_ret_6_noupd_ret); -RTS_ENTRY(stg_sel_ret_7_noupd_ret); -RTS_ENTRY(stg_sel_ret_8_noupd_ret); -RTS_ENTRY(stg_sel_ret_8_noupd_ret); -RTS_ENTRY(stg_sel_ret_9_noupd_ret); -RTS_ENTRY(stg_sel_ret_10_noupd_ret); -RTS_ENTRY(stg_sel_ret_11_noupd_ret); -RTS_ENTRY(stg_sel_ret_12_noupd_ret); -RTS_ENTRY(stg_sel_ret_13_noupd_ret); -RTS_ENTRY(stg_sel_ret_14_noupd_ret); -RTS_ENTRY(stg_sel_ret_15_noupd_ret); - -RTS_INFO(stg_sel_0_noupd_info); -RTS_INFO(stg_sel_1_noupd_info); -RTS_INFO(stg_sel_2_noupd_info); -RTS_INFO(stg_sel_3_noupd_info); -RTS_INFO(stg_sel_4_noupd_info); -RTS_INFO(stg_sel_5_noupd_info); -RTS_INFO(stg_sel_6_noupd_info); -RTS_INFO(stg_sel_7_noupd_info); -RTS_INFO(stg_sel_8_noupd_info); -RTS_INFO(stg_sel_9_noupd_info); -RTS_INFO(stg_sel_10_noupd_info); -RTS_INFO(stg_sel_11_noupd_info); -RTS_INFO(stg_sel_12_noupd_info); -RTS_INFO(stg_sel_13_noupd_info); -RTS_INFO(stg_sel_14_noupd_info); -RTS_INFO(stg_sel_15_noupd_info); - -RTS_ENTRY(stg_sel_0_noupd_entry); -RTS_ENTRY(stg_sel_1_noupd_entry); -RTS_ENTRY(stg_sel_2_noupd_entry); -RTS_ENTRY(stg_sel_3_noupd_entry); -RTS_ENTRY(stg_sel_4_noupd_entry); -RTS_ENTRY(stg_sel_5_noupd_entry); -RTS_ENTRY(stg_sel_6_noupd_entry); -RTS_ENTRY(stg_sel_7_noupd_entry); -RTS_ENTRY(stg_sel_8_noupd_entry); -RTS_ENTRY(stg_sel_9_noupd_entry); -RTS_ENTRY(stg_sel_10_noupd_entry); -RTS_ENTRY(stg_sel_11_noupd_entry); -RTS_ENTRY(stg_sel_12_noupd_entry); -RTS_ENTRY(stg_sel_13_noupd_entry); -RTS_ENTRY(stg_sel_14_noupd_entry); -RTS_ENTRY(stg_sel_15_noupd_entry); +RTS_RET(stg_sel_ret_0_upd); +RTS_RET(stg_sel_ret_1_upd); +RTS_RET(stg_sel_ret_2_upd); +RTS_RET(stg_sel_ret_3_upd); +RTS_RET(stg_sel_ret_4_upd); +RTS_RET(stg_sel_ret_5_upd); +RTS_RET(stg_sel_ret_6_upd); +RTS_RET(stg_sel_ret_7_upd); +RTS_RET(stg_sel_ret_8_upd); +RTS_RET(stg_sel_ret_9_upd); +RTS_RET(stg_sel_ret_10_upd); +RTS_RET(stg_sel_ret_11_upd); +RTS_RET(stg_sel_ret_12_upd); +RTS_RET(stg_sel_ret_13_upd); +RTS_RET(stg_sel_ret_14_upd); +RTS_RET(stg_sel_ret_15_upd); + +RTS_ENTRY(stg_sel_0_upd); +RTS_ENTRY(stg_sel_1_upd); +RTS_ENTRY(stg_sel_2_upd); +RTS_ENTRY(stg_sel_3_upd); +RTS_ENTRY(stg_sel_4_upd); +RTS_ENTRY(stg_sel_5_upd); +RTS_ENTRY(stg_sel_6_upd); +RTS_ENTRY(stg_sel_7_upd); +RTS_ENTRY(stg_sel_8_upd); +RTS_ENTRY(stg_sel_9_upd); +RTS_ENTRY(stg_sel_10_upd); +RTS_ENTRY(stg_sel_11_upd); +RTS_ENTRY(stg_sel_12_upd); +RTS_ENTRY(stg_sel_13_upd); +RTS_ENTRY(stg_sel_14_upd); +RTS_ENTRY(stg_sel_15_upd); + +RTS_ENTRY(stg_sel_0_noupd); +RTS_ENTRY(stg_sel_1_noupd); +RTS_ENTRY(stg_sel_2_noupd); +RTS_ENTRY(stg_sel_3_noupd); +RTS_ENTRY(stg_sel_4_noupd); +RTS_ENTRY(stg_sel_5_noupd); +RTS_ENTRY(stg_sel_6_noupd); +RTS_ENTRY(stg_sel_7_noupd); +RTS_ENTRY(stg_sel_8_noupd); +RTS_ENTRY(stg_sel_9_noupd); +RTS_ENTRY(stg_sel_10_noupd); +RTS_ENTRY(stg_sel_11_noupd); +RTS_ENTRY(stg_sel_12_noupd); +RTS_ENTRY(stg_sel_13_noupd); +RTS_ENTRY(stg_sel_14_noupd); +RTS_ENTRY(stg_sel_15_noupd); /* standard ap thunks */ -RTS_THUNK_INFO(stg_ap_1_upd_info); -RTS_THUNK_INFO(stg_ap_2_upd_info); -RTS_THUNK_INFO(stg_ap_3_upd_info); -RTS_THUNK_INFO(stg_ap_4_upd_info); -RTS_THUNK_INFO(stg_ap_5_upd_info); -RTS_THUNK_INFO(stg_ap_6_upd_info); -RTS_THUNK_INFO(stg_ap_7_upd_info); - -RTS_ENTRY(stg_ap_1_upd_entry); -RTS_ENTRY(stg_ap_2_upd_entry); -RTS_ENTRY(stg_ap_3_upd_entry); -RTS_ENTRY(stg_ap_4_upd_entry); -RTS_ENTRY(stg_ap_5_upd_entry); -RTS_ENTRY(stg_ap_6_upd_entry); -RTS_ENTRY(stg_ap_7_upd_entry); +RTS_THUNK(stg_ap_1_upd); +RTS_THUNK(stg_ap_2_upd); +RTS_THUNK(stg_ap_3_upd); +RTS_THUNK(stg_ap_4_upd); +RTS_THUNK(stg_ap_5_upd); +RTS_THUNK(stg_ap_6_upd); +RTS_THUNK(stg_ap_7_upd); /* standard application routines (see also rts/gen_apply.py, * and compiler/codeGen/CgStackery.lhs). */ -RTS_RET_INFO(stg_ap_v_info); -RTS_RET_INFO(stg_ap_f_info); -RTS_RET_INFO(stg_ap_d_info); -RTS_RET_INFO(stg_ap_l_info); -RTS_RET_INFO(stg_ap_n_info); -RTS_RET_INFO(stg_ap_p_info); -RTS_RET_INFO(stg_ap_pv_info); -RTS_RET_INFO(stg_ap_pp_info); -RTS_RET_INFO(stg_ap_ppv_info); -RTS_RET_INFO(stg_ap_ppp_info); -RTS_RET_INFO(stg_ap_pppv_info); -RTS_RET_INFO(stg_ap_pppp_info); -RTS_RET_INFO(stg_ap_ppppp_info); -RTS_RET_INFO(stg_ap_pppppp_info); - -RTS_ENTRY(stg_ap_v_ret); -RTS_ENTRY(stg_ap_f_ret); -RTS_ENTRY(stg_ap_d_ret); -RTS_ENTRY(stg_ap_l_ret); -RTS_ENTRY(stg_ap_n_ret); -RTS_ENTRY(stg_ap_p_ret); -RTS_ENTRY(stg_ap_pv_ret); -RTS_ENTRY(stg_ap_pp_ret); -RTS_ENTRY(stg_ap_ppv_ret); -RTS_ENTRY(stg_ap_ppp_ret); -RTS_ENTRY(stg_ap_pppv_ret); -RTS_ENTRY(stg_ap_pppp_ret); -RTS_ENTRY(stg_ap_ppppp_ret); -RTS_ENTRY(stg_ap_pppppp_ret); - -RTS_FUN(stg_ap_0_fast); -RTS_FUN(stg_ap_v_fast); -RTS_FUN(stg_ap_f_fast); -RTS_FUN(stg_ap_d_fast); -RTS_FUN(stg_ap_l_fast); -RTS_FUN(stg_ap_n_fast); -RTS_FUN(stg_ap_p_fast); -RTS_FUN(stg_ap_pv_fast); -RTS_FUN(stg_ap_pp_fast); -RTS_FUN(stg_ap_ppv_fast); -RTS_FUN(stg_ap_ppp_fast); -RTS_FUN(stg_ap_pppv_fast); -RTS_FUN(stg_ap_pppp_fast); -RTS_FUN(stg_ap_ppppp_fast); -RTS_FUN(stg_ap_pppppp_fast); -RTS_FUN(stg_PAP_apply); +RTS_RET(stg_ap_v); +RTS_RET(stg_ap_f); +RTS_RET(stg_ap_d); +RTS_RET(stg_ap_l); +RTS_RET(stg_ap_n); +RTS_RET(stg_ap_p); +RTS_RET(stg_ap_pv); +RTS_RET(stg_ap_pp); +RTS_RET(stg_ap_ppv); +RTS_RET(stg_ap_ppp); +RTS_RET(stg_ap_pppv); +RTS_RET(stg_ap_pppp); +RTS_RET(stg_ap_ppppp); +RTS_RET(stg_ap_pppppp); + +RTS_FUN_DECL(stg_ap_0_fast); +RTS_FUN_DECL(stg_ap_v_fast); +RTS_FUN_DECL(stg_ap_f_fast); +RTS_FUN_DECL(stg_ap_d_fast); +RTS_FUN_DECL(stg_ap_l_fast); +RTS_FUN_DECL(stg_ap_n_fast); +RTS_FUN_DECL(stg_ap_p_fast); +RTS_FUN_DECL(stg_ap_pv_fast); +RTS_FUN_DECL(stg_ap_pp_fast); +RTS_FUN_DECL(stg_ap_ppv_fast); +RTS_FUN_DECL(stg_ap_ppp_fast); +RTS_FUN_DECL(stg_ap_pppv_fast); +RTS_FUN_DECL(stg_ap_pppp_fast); +RTS_FUN_DECL(stg_ap_ppppp_fast); +RTS_FUN_DECL(stg_ap_pppppp_fast); +RTS_FUN_DECL(stg_PAP_apply); /* standard GC & stack check entry points, all defined in HeapStackCheck.hc */ -RTS_RET_INFO(stg_enter_info); -RTS_ENTRY(stg_enter_ret); - -RTS_RET_INFO(stg_gc_void_info); -RTS_ENTRY(stg_gc_void_ret); - -RTS_FUN(__stg_gc_enter_1); - -RTS_FUN(stg_gc_noregs); - -RTS_RET_INFO(stg_gc_unpt_r1_info); -RTS_ENTRY(stg_gc_unpt_r1_ret); -RTS_FUN(stg_gc_unpt_r1); - -RTS_RET_INFO(stg_gc_unbx_r1_info); -RTS_ENTRY(stg_gc_unbx_r1_ret); -RTS_FUN(stg_gc_unbx_r1); - -RTS_RET_INFO(stg_gc_f1_info); -RTS_ENTRY(stg_gc_f1_ret); -RTS_FUN(stg_gc_f1); - -RTS_RET_INFO(stg_gc_d1_info); -RTS_ENTRY(stg_gc_d1_ret); -RTS_FUN(stg_gc_d1); - -RTS_RET_INFO(stg_gc_l1_info); -RTS_ENTRY(stg_gc_l1_ret); -RTS_FUN(stg_gc_l1); - -RTS_FUN(__stg_gc_fun); -RTS_RET_INFO(stg_gc_fun_info); -RTS_ENTRY(stg_gc_fun_ret); - -RTS_RET_INFO(stg_gc_gen_info); -RTS_ENTRY(stg_gc_gen_ret); -RTS_FUN(stg_gc_gen); - -RTS_ENTRY(stg_ut_1_0_unreg_ret); -RTS_RET_INFO(stg_ut_1_0_unreg_info); - -RTS_FUN(stg_gc_gen_hp); -RTS_FUN(stg_gc_ut); -RTS_FUN(stg_gen_yield); -RTS_FUN(stg_yield_noregs); -RTS_FUN(stg_yield_to_interpreter); -RTS_FUN(stg_gen_block); -RTS_FUN(stg_block_noregs); -RTS_FUN(stg_block_1); -RTS_FUN(stg_block_blackhole); -RTS_FUN(stg_block_blackhole_finally); -RTS_FUN(stg_block_takemvar); -RTS_ENTRY(stg_block_takemvar_ret); -RTS_FUN(stg_block_putmvar); -RTS_ENTRY(stg_block_putmvar_ret); +RTS_RET(stg_enter); +RTS_RET(stg_enter_checkbh); + +RTS_RET(stg_gc_void); + +RTS_FUN_DECL(__stg_gc_enter_1); +RTS_FUN_DECL(stg_gc_noregs); + +RTS_RET(stg_gc_unpt_r1); +RTS_FUN_DECL(stg_gc_unpt_r1); + +RTS_RET(stg_gc_unbx_r1); +RTS_FUN_DECL(stg_gc_unbx_r1); + +RTS_RET(stg_gc_f1); +RTS_FUN_DECL(stg_gc_f1); + +RTS_RET(stg_gc_d1); +RTS_FUN_DECL(stg_gc_d1); + +RTS_RET(stg_gc_l1); +RTS_FUN_DECL(stg_gc_l1); + +RTS_RET(stg_gc_fun); +RTS_FUN_DECL(__stg_gc_fun); + +RTS_RET(stg_gc_gen); +RTS_FUN_DECL(stg_gc_gen); + +RTS_RET(stg_ut_1_0_unreg); + +RTS_FUN_DECL(stg_gc_gen_hp); +RTS_FUN_DECL(stg_gc_ut); +RTS_FUN_DECL(stg_gen_yield); +RTS_FUN_DECL(stg_yield_noregs); +RTS_FUN_DECL(stg_yield_to_interpreter); +RTS_FUN_DECL(stg_gen_block); +RTS_FUN_DECL(stg_block_noregs); +RTS_FUN_DECL(stg_block_1); +RTS_FUN_DECL(stg_block_blackhole); +RTS_FUN_DECL(stg_block_blackhole_finally); +RTS_FUN_DECL(stg_block_takemvar); +RTS_RET(stg_block_takemvar); +RTS_FUN_DECL(stg_block_putmvar); +RTS_RET(stg_block_putmvar); #ifdef mingw32_HOST_OS -RTS_FUN(stg_block_async); -RTS_ENTRY(stg_block_async_ret); -RTS_FUN(stg_block_async_void); -RTS_ENTRY(stg_block_async_void_ret); +RTS_FUN_DECL(stg_block_async); +RTS_RET(stg_block_async); +RTS_FUN_DECL(stg_block_async_void); +RTS_RET(stg_block_async_void); #endif -RTS_FUN(stg_block_stmwait); -RTS_FUN(stg_block_throwto); -RTS_ENTRY(stg_block_throwto_ret); -RTS_RET_INFO(stg_block_throwto_info); +RTS_FUN_DECL(stg_block_stmwait); +RTS_FUN_DECL(stg_block_throwto); +RTS_RET(stg_block_throwto); /* Entry/exit points from StgStartup.cmm */ -RTS_RET_INFO(stg_stop_thread_info); -RTS_ENTRY(stg_stop_thread_ret); +RTS_RET(stg_stop_thread); -RTS_FUN(stg_returnToStackTop); -RTS_FUN(stg_returnToSched); -RTS_FUN(stg_returnToSchedNotPaused); -RTS_FUN(stg_returnToSchedButFirst); -RTS_FUN(stg_threadFinished); +RTS_FUN_DECL(stg_returnToStackTop); +RTS_FUN_DECL(stg_returnToSched); +RTS_FUN_DECL(stg_returnToSchedNotPaused); +RTS_FUN_DECL(stg_returnToSchedButFirst); +RTS_FUN_DECL(stg_threadFinished); -RTS_FUN(stg_init_finish); -RTS_FUN(stg_init); +RTS_FUN_DECL(stg_init_finish); +RTS_FUN_DECL(stg_init); -RTS_FUN(StgReturn); +RTS_FUN_DECL(StgReturn); /* ----------------------------------------------------------------------------- PrimOps -------------------------------------------------------------------------- */ -RTS_FUN(plusIntegerzh_fast); -RTS_FUN(minusIntegerzh_fast); -RTS_FUN(timesIntegerzh_fast); -RTS_FUN(gcdIntegerzh_fast); -RTS_FUN(quotRemIntegerzh_fast); -RTS_FUN(quotIntegerzh_fast); -RTS_FUN(remIntegerzh_fast); -RTS_FUN(divExactIntegerzh_fast); -RTS_FUN(divModIntegerzh_fast); - -RTS_FUN(cmpIntegerIntzh_fast); -RTS_FUN(cmpIntegerzh_fast); -RTS_FUN(integer2Intzh_fast); -RTS_FUN(integer2Wordzh_fast); -RTS_FUN(gcdIntegerIntzh_fast); -RTS_FUN(gcdIntzh_fast); - -RTS_FUN(int2Integerzh_fast); -RTS_FUN(word2Integerzh_fast); - -RTS_FUN(decodeFloatzuIntzh_fast); -RTS_FUN(decodeDoublezh_fast); -RTS_FUN(decodeDoublezu2Intzh_fast); - -RTS_FUN(andIntegerzh_fast); -RTS_FUN(orIntegerzh_fast); -RTS_FUN(xorIntegerzh_fast); -RTS_FUN(complementIntegerzh_fast); +RTS_FUN_DECL(stg_plusIntegerzh); +RTS_FUN_DECL(stg_minusIntegerzh); +RTS_FUN_DECL(stg_timesIntegerzh); +RTS_FUN_DECL(stg_gcdIntegerzh); +RTS_FUN_DECL(stg_quotRemIntegerzh); +RTS_FUN_DECL(stg_quotIntegerzh); +RTS_FUN_DECL(stg_remIntegerzh); +RTS_FUN_DECL(stg_divExactIntegerzh); +RTS_FUN_DECL(stg_divModIntegerzh); + +RTS_FUN_DECL(stg_cmpIntegerIntzh); +RTS_FUN_DECL(stg_cmpIntegerzh); +RTS_FUN_DECL(stg_integer2Intzh); +RTS_FUN_DECL(stg_integer2Wordzh); +RTS_FUN_DECL(stg_gcdIntegerIntzh); +RTS_FUN_DECL(stg_gcdIntzh); + +RTS_FUN_DECL(stg_int2Integerzh); +RTS_FUN_DECL(stg_word2Integerzh); + +RTS_FUN_DECL(stg_decodeFloatzuIntzh); +RTS_FUN_DECL(stg_decodeDoublezh); +RTS_FUN_DECL(stg_decodeDoublezu2Intzh); + +RTS_FUN_DECL(stg_andIntegerzh); +RTS_FUN_DECL(stg_orIntegerzh); +RTS_FUN_DECL(stg_xorIntegerzh); +RTS_FUN_DECL(stg_complementIntegerzh); #if SIZEOF_HSINT == 4 -RTS_FUN(int64ToIntegerzh_fast); -RTS_FUN(word64ToIntegerzh_fast); +RTS_FUN_DECL(stg_int64ToIntegerzh); +RTS_FUN_DECL(stg_word64ToIntegerzh); #endif -RTS_FUN(unsafeThawArrayzh_fast); -RTS_FUN(newByteArrayzh_fast); -RTS_FUN(newPinnedByteArrayzh_fast); -RTS_FUN(newAlignedPinnedByteArrayzh_fast); -RTS_FUN(newArrayzh_fast); - -RTS_FUN(newMutVarzh_fast); -RTS_FUN(atomicModifyMutVarzh_fast); - -RTS_FUN(isEmptyMVarzh_fast); -RTS_FUN(newMVarzh_fast); -RTS_FUN(takeMVarzh_fast); -RTS_FUN(putMVarzh_fast); -RTS_FUN(tryTakeMVarzh_fast); -RTS_FUN(tryPutMVarzh_fast); - -RTS_FUN(waitReadzh_fast); -RTS_FUN(waitWritezh_fast); -RTS_FUN(delayzh_fast); +RTS_FUN_DECL(stg_unsafeThawArrayzh); +RTS_FUN_DECL(stg_newByteArrayzh); +RTS_FUN_DECL(stg_newPinnedByteArrayzh); +RTS_FUN_DECL(stg_newAlignedPinnedByteArrayzh); +RTS_FUN_DECL(stg_newArrayzh); + +RTS_FUN_DECL(stg_newMutVarzh); +RTS_FUN_DECL(stg_atomicModifyMutVarzh); + +RTS_FUN_DECL(stg_isEmptyMVarzh); +RTS_FUN_DECL(stg_newMVarzh); +RTS_FUN_DECL(stg_takeMVarzh); +RTS_FUN_DECL(stg_putMVarzh); +RTS_FUN_DECL(stg_tryTakeMVarzh); +RTS_FUN_DECL(stg_tryPutMVarzh); + +RTS_FUN_DECL(stg_waitReadzh); +RTS_FUN_DECL(stg_waitWritezh); +RTS_FUN_DECL(stg_delayzh); #ifdef mingw32_HOST_OS -RTS_FUN(asyncReadzh_fast); -RTS_FUN(asyncWritezh_fast); -RTS_FUN(asyncDoProczh_fast); +RTS_FUN_DECL(stg_asyncReadzh); +RTS_FUN_DECL(stg_asyncWritezh); +RTS_FUN_DECL(stg_asyncDoProczh); #endif -RTS_FUN(catchzh_fast); -RTS_FUN(raisezh_fast); -RTS_FUN(raiseIOzh_fast); - -RTS_FUN(makeStableNamezh_fast); -RTS_FUN(makeStablePtrzh_fast); -RTS_FUN(deRefStablePtrzh_fast); - -RTS_FUN(forkzh_fast); -RTS_FUN(forkOnzh_fast); -RTS_FUN(yieldzh_fast); -RTS_FUN(killThreadzh_fast); -RTS_FUN(asyncExceptionsBlockedzh_fast); -RTS_FUN(blockAsyncExceptionszh_fast); -RTS_FUN(unblockAsyncExceptionszh_fast); -RTS_FUN(myThreadIdzh_fast); -RTS_FUN(labelThreadzh_fast); -RTS_FUN(isCurrentThreadBoundzh_fast); -RTS_FUN(threadStatuszh_fast); - -RTS_FUN(mkWeakzh_fast); -RTS_FUN(mkWeakForeignzh_fast); -RTS_FUN(mkWeakForeignEnvzh_fast); -RTS_FUN(finalizzeWeakzh_fast); -RTS_FUN(deRefWeakzh_fast); - -RTS_FUN(newBCOzh_fast); -RTS_FUN(mkApUpd0zh_fast); - -RTS_FUN(retryzh_fast); -RTS_FUN(catchRetryzh_fast); -RTS_FUN(catchSTMzh_fast); -RTS_FUN(atomicallyzh_fast); -RTS_FUN(newTVarzh_fast); -RTS_FUN(readTVarzh_fast); -RTS_FUN(readTVarIOzh_fast); -RTS_FUN(writeTVarzh_fast); -RTS_FUN(checkzh_fast); - -RTS_FUN(unpackClosurezh_fast); -RTS_FUN(getApStackValzh_fast); -RTS_FUN(getSparkzh_fast); - -RTS_FUN(noDuplicatezh_fast); - -RTS_FUN(traceCcszh_fast); +RTS_FUN_DECL(stg_catchzh); +RTS_FUN_DECL(stg_raisezh); +RTS_FUN_DECL(stg_raiseIOzh); + +RTS_FUN_DECL(stg_makeStableNamezh); +RTS_FUN_DECL(stg_makeStablePtrzh); +RTS_FUN_DECL(stg_deRefStablePtrzh); + +RTS_FUN_DECL(stg_forkzh); +RTS_FUN_DECL(stg_forkOnzh); +RTS_FUN_DECL(stg_yieldzh); +RTS_FUN_DECL(stg_killThreadzh); +RTS_FUN_DECL(stg_getMaskingStatezh); +RTS_FUN_DECL(stg_maskAsyncExceptionszh); +RTS_FUN_DECL(stg_maskUninterruptiblezh); +RTS_FUN_DECL(stg_unmaskAsyncExceptionszh); +RTS_FUN_DECL(stg_myThreadIdzh); +RTS_FUN_DECL(stg_labelThreadzh); +RTS_FUN_DECL(stg_isCurrentThreadBoundzh); +RTS_FUN_DECL(stg_threadStatuszh); + +RTS_FUN_DECL(stg_mkWeakzh); +RTS_FUN_DECL(stg_mkWeakForeignzh); +RTS_FUN_DECL(stg_mkWeakForeignEnvzh); +RTS_FUN_DECL(stg_finalizzeWeakzh); +RTS_FUN_DECL(stg_deRefWeakzh); + +RTS_FUN_DECL(stg_newBCOzh); +RTS_FUN_DECL(stg_mkApUpd0zh); + +RTS_FUN_DECL(stg_retryzh); +RTS_FUN_DECL(stg_catchRetryzh); +RTS_FUN_DECL(stg_catchSTMzh); +RTS_FUN_DECL(stg_atomicallyzh); +RTS_FUN_DECL(stg_newTVarzh); +RTS_FUN_DECL(stg_readTVarzh); +RTS_FUN_DECL(stg_readTVarIOzh); +RTS_FUN_DECL(stg_writeTVarzh); +RTS_FUN_DECL(stg_checkzh); + +RTS_FUN_DECL(stg_unpackClosurezh); +RTS_FUN_DECL(stg_getApStackValzh); +RTS_FUN_DECL(stg_getSparkzh); +RTS_FUN_DECL(stg_numSparkszh); + +RTS_FUN_DECL(stg_noDuplicatezh); + +RTS_FUN_DECL(stg_traceCcszh); +RTS_FUN_DECL(stg_traceEventzh); /* Other misc stuff */ // See wiki:Commentary/Compiler/Backends/PprC#Prototypes @@ -617,7 +470,7 @@ extern StgWord stg_ap_stack_entries[]; extern StgWord stg_stack_save_entries[]; // Storage.c -extern unsigned int RTS_VAR(alloc_blocks); +extern unsigned int RTS_VAR(g0); extern unsigned int RTS_VAR(alloc_blocks_lim); extern StgWord RTS_VAR(weak_ptr_list); extern StgWord RTS_VAR(atomic_modify_mutvar_mutex); @@ -634,6 +487,7 @@ extern StgWord RTS_VAR(CCCS); /* current CCS */ extern unsigned int RTS_VAR(entering_PAP); extern StgWord RTS_VAR(CC_LIST); /* registered CC list */ extern StgWord RTS_VAR(CCS_LIST); /* registered CCS list */ +extern StgWord CCS_SYSTEM[]; extern unsigned int RTS_VAR(CC_ID); /* global ids */ extern unsigned int RTS_VAR(CCS_ID);