1 /* -----------------------------------------------------------------------------
2 * $Id: StgMiscClosures.h,v 1.14 1999/07/06 16:17:40 sewardj Exp $
4 * (c) The GHC Team, 1998-1999
6 * Entry code for various built-in closure types.
8 * ---------------------------------------------------------------------------*/
10 /* The naming scheme here follows the naming scheme for closure types
11 * defined in InfoTables.h. The actual info tables and entry code for
12 * these objects can be found in StgMiscClosures.hc.
18 STGFUN(IND_STATIC_entry);
19 STGFUN(IND_PERM_entry);
20 STGFUN(IND_OLDGEN_entry);
21 STGFUN(IND_OLDGEN_PERM_entry);
22 STGFUN(CAF_UNENTERED_entry);
23 STGFUN(CAF_ENTERED_entry);
24 STGFUN(CAF_BLACKHOLE_entry);
25 STGFUN(BLACKHOLE_entry);
26 STGFUN(BLACKHOLE_BQ_entry);
28 STGFUN(SE_BLACKHOLE_entry);
29 STGFUN(SE_CAF_BLACKHOLE_entry);
32 STGFUN(EVACUATED_entry);
33 STGFUN(FOREIGN_entry);
35 STGFUN(NO_FINALIZER_entry);
36 STGFUN(DEAD_WEAK_entry);
37 STGFUN(STABLE_NAME_entry);
39 STGFUN(FULL_MVAR_entry);
40 STGFUN(EMPTY_MVAR_entry);
41 STGFUN(ARR_WORDS_entry);
42 STGFUN(MUT_ARR_PTRS_entry);
43 STGFUN(MUT_ARR_PTRS_FROZEN_entry);
44 STGFUN(MUT_VAR_entry);
45 STGFUN(END_TSO_QUEUE_entry);
46 STGFUN(MUT_CONS_entry);
47 STGFUN(END_MUT_LIST_entry);
48 STGFUN(dummy_ret_entry);
52 extern DLL_IMPORT_RTS const StgInfoTable IND_info;
53 extern DLL_IMPORT_RTS const StgInfoTable IND_STATIC_info;
54 extern DLL_IMPORT_RTS const StgInfoTable IND_PERM_info;
55 extern DLL_IMPORT_RTS const StgInfoTable IND_OLDGEN_info;
56 extern DLL_IMPORT_RTS const StgInfoTable IND_OLDGEN_PERM_info;
57 extern DLL_IMPORT_RTS const StgInfoTable CAF_UNENTERED_info;
58 extern DLL_IMPORT_RTS const StgInfoTable CAF_ENTERED_info;
59 extern DLL_IMPORT_RTS const StgInfoTable CAF_BLACKHOLE_info;
60 extern DLL_IMPORT_RTS const StgInfoTable BLACKHOLE_info;
61 extern DLL_IMPORT_RTS const StgInfoTable BLACKHOLE_BQ_info;
63 extern DLL_IMPORT_RTS const StgInfoTable SE_BLACKHOLE_info;
64 extern DLL_IMPORT_RTS const StgInfoTable SE_CAF_BLACKHOLE_info;
66 extern DLL_IMPORT_RTS const StgInfoTable BCO_info;
67 extern DLL_IMPORT_RTS const StgInfoTable EVACUATED_info;
68 extern DLL_IMPORT_RTS const StgInfoTable FOREIGN_info;
69 extern DLL_IMPORT_RTS const StgInfoTable WEAK_info;
70 extern DLL_IMPORT_RTS const StgInfoTable DEAD_WEAK_info;
71 extern DLL_IMPORT_RTS const StgInfoTable STABLE_NAME_info;
72 extern DLL_IMPORT_RTS const StgInfoTable FULL_MVAR_info;
73 extern DLL_IMPORT_RTS const StgInfoTable EMPTY_MVAR_info;
74 extern DLL_IMPORT_RTS const StgInfoTable TSO_info;
75 extern DLL_IMPORT_RTS const StgInfoTable ARR_WORDS_info;
76 extern DLL_IMPORT_RTS const StgInfoTable MUT_ARR_WORDS_info;
77 extern DLL_IMPORT_RTS const StgInfoTable MUT_ARR_PTRS_info;
78 extern DLL_IMPORT_RTS const StgInfoTable MUT_ARR_PTRS_FROZEN_info;
79 extern DLL_IMPORT_RTS const StgInfoTable MUT_VAR_info;
80 extern DLL_IMPORT_RTS const StgInfoTable END_TSO_QUEUE_info;
81 extern DLL_IMPORT_RTS const StgInfoTable MUT_CONS_info;
82 extern DLL_IMPORT_RTS const StgInfoTable END_MUT_LIST_info;
83 extern DLL_IMPORT_RTS const StgInfoTable catch_info;
84 extern DLL_IMPORT_RTS const StgInfoTable seq_info;
85 extern DLL_IMPORT_RTS const StgInfoTable dummy_ret_info;
89 EXTFUN(Hugs_CONSTR_entry);
91 extern const vec_info_8 ret_bco_info;
93 #endif /* INTERPRETER */
97 extern DLL_IMPORT_DATA StgClosure END_TSO_QUEUE_closure;
98 extern DLL_IMPORT_DATA StgClosure END_MUT_LIST_closure;
99 extern DLL_IMPORT_DATA StgClosure NO_FINALIZER_closure;
100 extern DLL_IMPORT_DATA StgClosure dummy_ret_closure;
101 extern DLL_IMPORT_DATA StgClosure forceIO_closure;
103 extern DLL_IMPORT_DATA StgIntCharlikeClosure CHARLIKE_closure[];
104 extern DLL_IMPORT_DATA StgIntCharlikeClosure INTLIKE_closure[];
106 /* standard entry points */
108 extern StgFun stg_error_entry;
110 /* (see also below -- KSW 1998-12) */
112 /* standard selector thunks */
120 EI__ __sel_0_upd_info;
121 EI__ __sel_1_upd_info;
122 EI__ __sel_2_upd_info;
123 EI__ __sel_3_upd_info;
124 EI__ __sel_4_upd_info;
125 EI__ __sel_5_upd_info;
126 EI__ __sel_6_upd_info;
127 EI__ __sel_7_upd_info;
128 EI__ __sel_8_upd_info;
129 EI__ __sel_8_upd_info;
130 EI__ __sel_9_upd_info;
131 EI__ __sel_10_upd_info;
132 EI__ __sel_11_upd_info;
133 EI__ __sel_12_upd_info;
134 EI__ __sel_13_upd_info;
135 EI__ __sel_14_upd_info;
136 EI__ __sel_15_upd_info;
138 EI__ __sel_0_noupd_info;
139 EI__ __sel_1_noupd_info;
140 EI__ __sel_2_noupd_info;
141 EI__ __sel_3_noupd_info;
142 EI__ __sel_4_noupd_info;
143 EI__ __sel_5_noupd_info;
144 EI__ __sel_6_noupd_info;
145 EI__ __sel_7_noupd_info;
146 EI__ __sel_8_noupd_info;
147 EI__ __sel_9_noupd_info;
148 EI__ __sel_10_noupd_info;
149 EI__ __sel_11_noupd_info;
150 EI__ __sel_12_noupd_info;
151 EI__ __sel_13_noupd_info;
152 EI__ __sel_14_noupd_info;
153 EI__ __sel_15_noupd_info;
155 /* and their standard entry points -- KSW 1998-12 */
157 EF_(__sel_0_upd_entry);
158 EF_(__sel_1_upd_entry);
159 EF_(__sel_2_upd_entry);
160 EF_(__sel_3_upd_entry);
161 EF_(__sel_4_upd_entry);
162 EF_(__sel_5_upd_entry);
163 EF_(__sel_6_upd_entry);
164 EF_(__sel_7_upd_entry);
165 EF_(__sel_8_upd_entry);
166 EF_(__sel_8_upd_entry);
167 EF_(__sel_9_upd_entry);
168 EF_(__sel_10_upd_entry);
169 EF_(__sel_11_upd_entry);
170 EF_(__sel_12_upd_entry);
171 EF_(__sel_13_upd_entry);
172 EF_(__sel_14_upd_entry);
173 EF_(__sel_15_upd_entry);
175 EF_(__sel_0_noupd_entry);
176 EF_(__sel_1_noupd_entry);
177 EF_(__sel_2_noupd_entry);
178 EF_(__sel_3_noupd_entry);
179 EF_(__sel_4_noupd_entry);
180 EF_(__sel_5_noupd_entry);
181 EF_(__sel_6_noupd_entry);
182 EF_(__sel_7_noupd_entry);
183 EF_(__sel_8_noupd_entry);
184 EF_(__sel_9_noupd_entry);
185 EF_(__sel_10_noupd_entry);
186 EF_(__sel_11_noupd_entry);
187 EF_(__sel_12_noupd_entry);
188 EF_(__sel_13_noupd_entry);
189 EF_(__sel_14_noupd_entry);
190 EF_(__sel_15_noupd_entry);
192 /* standard ap thunks */
194 EI__ __ap_1_upd_info;
195 EI__ __ap_2_upd_info;
196 EI__ __ap_3_upd_info;
197 EI__ __ap_4_upd_info;
198 EI__ __ap_5_upd_info;
199 EI__ __ap_6_upd_info;
200 EI__ __ap_7_upd_info;
201 EI__ __ap_8_upd_info;