Massive patch for the first months work adding System FC to GHC #35
[ghc-hetmet.git] / includes / StgMiscClosures.h
1 /* ----------------------------------------------------------------------------
2  *
3  * (c) The GHC Team, 1998-2004
4  *
5  * Declarations for various symbols exported by the RTS.
6  *
7  * ToDo: many of the symbols in here don't need to be exported, but
8  * our Cmm code generator doesn't know how to generate local symbols
9  * for the RTS bits (it assumes all RTS symbols are external).
10  *
11  * --------------------------------------------------------------------------*/
12
13 #ifndef STGMISCCLOSURES_H
14 #define STGMISCCLOSURES_H
15
16 #if IN_STG_CODE
17 #  define RTS_RET_INFO(i)   extern W_(i)[]
18 #  define RTS_FUN_INFO(i)   extern W_(i)[]
19 #  define RTS_THUNK_INFO(i) extern W_(i)[]
20 #  define RTS_INFO(i)       extern W_(i)[]
21 #  define RTS_CLOSURE(i)    extern W_(i)[]
22 #  define RTS_FUN(f)        extern DLL_IMPORT_RTS StgFunPtr f(void)
23 #else
24 #  define RTS_RET_INFO(i)   extern DLL_IMPORT_RTS const StgRetInfoTable i
25 #  define RTS_FUN_INFO(i)   extern DLL_IMPORT_RTS const StgFunInfoTable i
26 #  define RTS_THUNK_INFO(i) extern DLL_IMPORT_RTS const StgThunkInfoTable i
27 #  define RTS_INFO(i)       extern DLL_IMPORT_RTS const StgInfoTable i
28 #  define RTS_CLOSURE(i)    extern DLL_IMPORT_RTS StgClosure i
29 #  define RTS_FUN(f)        extern DLL_IMPORT_RTS StgFunPtr f(void)
30 #endif
31
32 #ifdef TABLES_NEXT_TO_CODE
33 #  define RTS_ENTRY(f)    /* nothing */
34 #else
35 #  define RTS_ENTRY(f)    RTS_FUN(f)
36 #endif
37
38 /* Stack frames */
39 RTS_RET_INFO(stg_upd_frame_info);
40 RTS_RET_INFO(stg_marked_upd_frame_info);
41 RTS_RET_INFO(stg_noupd_frame_info);
42 RTS_RET_INFO(stg_seq_frame_info);
43 RTS_RET_INFO(stg_catch_frame_info);
44 RTS_RET_INFO(stg_catch_retry_frame_info);
45 RTS_RET_INFO(stg_atomically_frame_info);
46 RTS_RET_INFO(stg_atomically_waiting_frame_info);
47 RTS_RET_INFO(stg_catch_stm_frame_info);
48
49 RTS_ENTRY(stg_upd_frame_ret);
50 RTS_ENTRY(stg_marked_upd_frame_ret);
51 RTS_ENTRY(stg_seq_frame_ret);
52
53 /* Entry code for constructors created by the bytecode interpreter */
54 RTS_FUN(stg_interp_constr_entry);
55 RTS_FUN(stg_interp_constr1_entry);
56 RTS_FUN(stg_interp_constr2_entry);
57 RTS_FUN(stg_interp_constr3_entry);
58 RTS_FUN(stg_interp_constr4_entry);
59 RTS_FUN(stg_interp_constr5_entry);
60 RTS_FUN(stg_interp_constr6_entry);
61 RTS_FUN(stg_interp_constr7_entry);
62 RTS_FUN(stg_interp_constr8_entry);
63
64 /* Magic glue code for when compiled code returns a value in R1/F1/D1
65    or a VoidRep to the interpreter. */
66 RTS_RET_INFO(stg_ctoi_R1p_info);
67 RTS_RET_INFO(stg_ctoi_R1unpt_info);
68 RTS_RET_INFO(stg_ctoi_R1n_info);
69 RTS_RET_INFO(stg_ctoi_F1_info);
70 RTS_RET_INFO(stg_ctoi_D1_info);
71 RTS_RET_INFO(stg_ctoi_L1_info);
72 RTS_RET_INFO(stg_ctoi_V_info);
73
74 RTS_ENTRY(stg_ctoi_R1p_ret);
75 RTS_ENTRY(stg_ctoi_R1unpt_ret);
76 RTS_ENTRY(stg_ctoi_R1n_ret);
77 RTS_ENTRY(stg_ctoi_F1_ret);
78 RTS_ENTRY(stg_ctoi_D1_ret);
79 RTS_ENTRY(stg_ctoi_L1_ret);
80 RTS_ENTRY(stg_ctoi_V_ret);
81
82 RTS_RET_INFO(stg_apply_interp_info);
83 RTS_ENTRY(stg_apply_interp_ret);
84
85 RTS_INFO(stg_IND_info);
86 RTS_INFO(stg_IND_direct_info);
87 RTS_INFO(stg_IND_0_info);
88 RTS_INFO(stg_IND_1_info);
89 RTS_INFO(stg_IND_2_info);
90 RTS_INFO(stg_IND_3_info);
91 RTS_INFO(stg_IND_4_info);
92 RTS_INFO(stg_IND_5_info);
93 RTS_INFO(stg_IND_6_info);
94 RTS_INFO(stg_IND_7_info);
95 RTS_INFO(stg_IND_STATIC_info);
96 RTS_INFO(stg_IND_PERM_info);
97 RTS_INFO(stg_IND_OLDGEN_info);
98 RTS_INFO(stg_IND_OLDGEN_PERM_info);
99 RTS_INFO(stg_CAF_UNENTERED_info);
100 RTS_INFO(stg_CAF_ENTERED_info);
101 RTS_INFO(stg_WHITEHOLE_info);
102 RTS_INFO(stg_BLACKHOLE_info);
103 RTS_INFO(stg_CAF_BLACKHOLE_info);
104 #ifdef TICKY_TICKY
105 RTS_INFO(stg_SE_BLACKHOLE_info);
106 RTS_INFO(stg_SE_CAF_BLACKHOLE_info);
107 #endif
108
109 #if defined(PAR) || defined(GRAN)
110 RTS_INFO(stg_RBH_info);
111 #endif
112 #if defined(PAR)
113 RTS_INFO(stg_FETCH_ME_BQ_info);
114 #endif
115 RTS_FUN_INFO(stg_BCO_info);
116 RTS_INFO(stg_EVACUATED_info);
117 RTS_INFO(stg_WEAK_info);
118 RTS_INFO(stg_DEAD_WEAK_info);
119 RTS_INFO(stg_STABLE_NAME_info);
120 RTS_INFO(stg_FULL_MVAR_info);
121 RTS_INFO(stg_EMPTY_MVAR_info);
122 RTS_INFO(stg_TSO_info);
123 RTS_INFO(stg_ARR_WORDS_info);
124 RTS_INFO(stg_MUT_ARR_WORDS_info);
125 RTS_INFO(stg_MUT_ARR_PTRS_CLEAN_info);
126 RTS_INFO(stg_MUT_ARR_PTRS_DIRTY_info);
127 RTS_INFO(stg_MUT_ARR_PTRS_FROZEN_info);
128 RTS_INFO(stg_MUT_ARR_PTRS_FROZEN0_info);
129 RTS_INFO(stg_MUT_VAR_CLEAN_info);
130 RTS_INFO(stg_MUT_VAR_DIRTY_info);
131 RTS_INFO(stg_END_TSO_QUEUE_info);
132 RTS_INFO(stg_MUT_CONS_info);
133 RTS_INFO(stg_catch_info);
134 RTS_INFO(stg_PAP_info);
135 RTS_INFO(stg_AP_info);
136 RTS_INFO(stg_AP_STACK_info);
137 RTS_INFO(stg_dummy_ret_info);
138 RTS_INFO(stg_raise_info);
139 RTS_INFO(stg_TVAR_WAIT_QUEUE_info);
140 RTS_INFO(stg_TVAR_info);
141 RTS_INFO(stg_TREC_CHUNK_info);
142 RTS_INFO(stg_TREC_HEADER_info);
143 RTS_INFO(stg_END_STM_WAIT_QUEUE_info);
144 RTS_INFO(stg_END_STM_CHUNK_LIST_info);
145 RTS_INFO(stg_NO_TREC_info);
146
147 RTS_ENTRY(stg_IND_entry);
148 RTS_ENTRY(stg_IND_direct_entry);
149 RTS_ENTRY(stg_IND_0_entry);
150 RTS_ENTRY(stg_IND_1_entry);
151 RTS_ENTRY(stg_IND_2_entry);
152 RTS_ENTRY(stg_IND_3_entry);
153 RTS_ENTRY(stg_IND_4_entry);
154 RTS_ENTRY(stg_IND_5_entry);
155 RTS_ENTRY(stg_IND_6_entry);
156 RTS_ENTRY(stg_IND_7_entry);
157 RTS_ENTRY(stg_IND_STATIC_entry);
158 RTS_ENTRY(stg_IND_PERM_entry);
159 RTS_ENTRY(stg_IND_OLDGEN_entry);
160 RTS_ENTRY(stg_IND_OLDGEN_PERM_entry);
161 RTS_ENTRY(stg_CAF_UNENTERED_entry);
162 RTS_ENTRY(stg_CAF_ENTERED_entry);
163 RTS_ENTRY(stg_WHITEHOLE_entry);
164 RTS_ENTRY(stg_BLACKHOLE_entry);
165 RTS_ENTRY(stg_CAF_BLACKHOLE_entry);
166 #ifdef TICKY_TICKY
167 RTS_ENTRY(stg_SE_BLACKHOLE_entry);
168 RTS_ENTRY(stg_SE_CAF_BLACKHOLE_entry);
169 #endif
170 #if defined(PAR) || defined(GRAN)
171 RTS_ENTRY(stg_RBH_entry);
172 #endif
173 #if defined(PAR)
174 RTS_ENTRY(stg_FETCH_ME_BQ_entry);
175 #endif
176 RTS_ENTRY(stg_BCO_entry);
177 RTS_ENTRY(stg_EVACUATED_entry);
178 RTS_ENTRY(stg_WEAK_entry);
179 RTS_ENTRY(stg_DEAD_WEAK_entry);
180 RTS_ENTRY(stg_STABLE_NAME_entry);
181 RTS_ENTRY(stg_FULL_MVAR_entry);
182 RTS_ENTRY(stg_EMPTY_MVAR_entry);
183 RTS_ENTRY(stg_TSO_entry);
184 RTS_ENTRY(stg_ARR_WORDS_entry);
185 RTS_ENTRY(stg_MUT_ARR_WORDS_entry);
186 RTS_ENTRY(stg_MUT_ARR_PTRS_CLEAN_entry);
187 RTS_ENTRY(stg_MUT_ARR_PTRS_DIRTY_entry);
188 RTS_ENTRY(stg_MUT_ARR_PTRS_FROZEN_entry);
189 RTS_ENTRY(stg_MUT_ARR_PTRS_FROZEN0_entry);
190 RTS_ENTRY(stg_MUT_VAR_CLEAN_entry);
191 RTS_ENTRY(stg_MUT_VAR_DIRTY_entry);
192 RTS_ENTRY(stg_END_TSO_QUEUE_entry);
193 RTS_ENTRY(stg_MUT_CONS_entry);
194 RTS_ENTRY(stg_catch_entry);
195 RTS_ENTRY(stg_PAP_entry);
196 RTS_ENTRY(stg_AP_entry);
197 RTS_ENTRY(stg_AP_STACK_entry);
198 RTS_ENTRY(stg_dummy_ret_entry);
199 RTS_ENTRY(stg_raise_entry);
200 RTS_ENTRY(stg_END_STM_WAIT_QUEUE_entry);
201 RTS_ENTRY(stg_END_STM_CHUNK_LIST_entry);
202 RTS_ENTRY(stg_NO_TREC_entry);
203 RTS_ENTRY(stg_TVAR_entry);
204 RTS_ENTRY(stg_TVAR_WAIT_QUEUE_entry);
205 RTS_ENTRY(stg_TREC_CHUNK_entry);
206 RTS_ENTRY(stg_TREC_HEADER_entry);
207
208
209 RTS_ENTRY(stg_unblockAsyncExceptionszh_ret_ret);
210 RTS_ENTRY(stg_blockAsyncExceptionszh_ret_ret);
211 RTS_ENTRY(stg_catch_frame_ret);
212 RTS_ENTRY(stg_catch_retry_frame_ret);
213 RTS_ENTRY(stg_atomically_frame_ret);
214 RTS_ENTRY(stg_atomically_waiting_frame_ret);
215 RTS_ENTRY(stg_catch_stm_frame_ret);
216 RTS_ENTRY(stg_catch_frame_ret);
217 RTS_ENTRY(stg_catch_entry);
218 RTS_ENTRY(stg_raise_entry);
219
220 /* closures */
221
222 RTS_CLOSURE(stg_END_TSO_QUEUE_closure);
223 RTS_CLOSURE(stg_NO_FINALIZER_closure);
224 RTS_CLOSURE(stg_dummy_ret_closure);
225 RTS_CLOSURE(stg_forceIO_closure);
226
227 RTS_CLOSURE(stg_END_STM_WAIT_QUEUE_closure);
228 RTS_CLOSURE(stg_END_STM_CHUNK_LIST_closure);
229 RTS_CLOSURE(stg_NO_TREC_closure);
230
231 RTS_ENTRY(stg_NO_FINALIZER_entry);
232 RTS_ENTRY(stg_END_EXCEPTION_LIST_entry);
233 RTS_ENTRY(stg_EXCEPTION_CONS_entry);
234
235 #if IN_STG_CODE
236 extern DLL_IMPORT_RTS StgWordArray stg_CHARLIKE_closure;
237 extern DLL_IMPORT_RTS StgWordArray stg_INTLIKE_closure;
238 #else
239 extern DLL_IMPORT_RTS StgIntCharlikeClosure stg_CHARLIKE_closure[];
240 extern DLL_IMPORT_RTS StgIntCharlikeClosure stg_INTLIKE_closure[];
241 #endif
242
243 /* StgStartup */
244
245 RTS_RET_INFO(stg_forceIO_info);
246 RTS_ENTRY(stg_forceIO_ret);
247
248 RTS_RET_INFO(stg_noforceIO_info);
249 RTS_ENTRY(stg_noforceIO_ret);
250
251 /* standard entry points */
252
253 /* standard selector thunks */
254
255 RTS_ENTRY(stg_sel_ret_0_upd_ret);
256 RTS_ENTRY(stg_sel_ret_1_upd_ret);
257 RTS_ENTRY(stg_sel_ret_2_upd_ret);
258 RTS_ENTRY(stg_sel_ret_3_upd_ret);
259 RTS_ENTRY(stg_sel_ret_4_upd_ret);
260 RTS_ENTRY(stg_sel_ret_5_upd_ret);
261 RTS_ENTRY(stg_sel_ret_6_upd_ret);
262 RTS_ENTRY(stg_sel_ret_7_upd_ret);
263 RTS_ENTRY(stg_sel_ret_8_upd_ret);
264 RTS_ENTRY(stg_sel_ret_8_upd_ret);
265 RTS_ENTRY(stg_sel_ret_9_upd_ret);
266 RTS_ENTRY(stg_sel_ret_10_upd_ret);
267 RTS_ENTRY(stg_sel_ret_11_upd_ret);
268 RTS_ENTRY(stg_sel_ret_12_upd_ret);
269 RTS_ENTRY(stg_sel_ret_13_upd_ret);
270 RTS_ENTRY(stg_sel_ret_14_upd_ret);
271 RTS_ENTRY(stg_sel_ret_15_upd_ret);
272
273 RTS_INFO(stg_sel_0_upd_info);
274 RTS_INFO(stg_sel_1_upd_info);
275 RTS_INFO(stg_sel_2_upd_info);
276 RTS_INFO(stg_sel_3_upd_info);
277 RTS_INFO(stg_sel_4_upd_info);
278 RTS_INFO(stg_sel_5_upd_info);
279 RTS_INFO(stg_sel_6_upd_info);
280 RTS_INFO(stg_sel_7_upd_info);
281 RTS_INFO(stg_sel_8_upd_info);
282 RTS_INFO(stg_sel_8_upd_info);
283 RTS_INFO(stg_sel_9_upd_info);
284 RTS_INFO(stg_sel_10_upd_info);
285 RTS_INFO(stg_sel_11_upd_info);
286 RTS_INFO(stg_sel_12_upd_info);
287 RTS_INFO(stg_sel_13_upd_info);
288 RTS_INFO(stg_sel_14_upd_info);
289 RTS_INFO(stg_sel_15_upd_info);
290
291 RTS_ENTRY(stg_sel_0_upd_entry);
292 RTS_ENTRY(stg_sel_1_upd_entry);
293 RTS_ENTRY(stg_sel_2_upd_entry);
294 RTS_ENTRY(stg_sel_3_upd_entry);
295 RTS_ENTRY(stg_sel_4_upd_entry);
296 RTS_ENTRY(stg_sel_5_upd_entry);
297 RTS_ENTRY(stg_sel_6_upd_entry);
298 RTS_ENTRY(stg_sel_7_upd_entry);
299 RTS_ENTRY(stg_sel_8_upd_entry);
300 RTS_ENTRY(stg_sel_8_upd_entry);
301 RTS_ENTRY(stg_sel_9_upd_entry);
302 RTS_ENTRY(stg_sel_10_upd_entry);
303 RTS_ENTRY(stg_sel_11_upd_entry);
304 RTS_ENTRY(stg_sel_12_upd_entry);
305 RTS_ENTRY(stg_sel_13_upd_entry);
306 RTS_ENTRY(stg_sel_14_upd_entry);
307 RTS_ENTRY(stg_sel_15_upd_entry);
308
309 RTS_ENTRY(stg_sel_ret_0_noupd_ret);
310 RTS_ENTRY(stg_sel_ret_1_noupd_ret);
311 RTS_ENTRY(stg_sel_ret_2_noupd_ret);
312 RTS_ENTRY(stg_sel_ret_3_noupd_ret);
313 RTS_ENTRY(stg_sel_ret_4_noupd_ret);
314 RTS_ENTRY(stg_sel_ret_5_noupd_ret);
315 RTS_ENTRY(stg_sel_ret_6_noupd_ret);
316 RTS_ENTRY(stg_sel_ret_7_noupd_ret);
317 RTS_ENTRY(stg_sel_ret_8_noupd_ret);
318 RTS_ENTRY(stg_sel_ret_8_noupd_ret);
319 RTS_ENTRY(stg_sel_ret_9_noupd_ret);
320 RTS_ENTRY(stg_sel_ret_10_noupd_ret);
321 RTS_ENTRY(stg_sel_ret_11_noupd_ret);
322 RTS_ENTRY(stg_sel_ret_12_noupd_ret);
323 RTS_ENTRY(stg_sel_ret_13_noupd_ret);
324 RTS_ENTRY(stg_sel_ret_14_noupd_ret);
325 RTS_ENTRY(stg_sel_ret_15_noupd_ret);
326
327 RTS_INFO(stg_sel_0_noupd_info);
328 RTS_INFO(stg_sel_1_noupd_info);
329 RTS_INFO(stg_sel_2_noupd_info);
330 RTS_INFO(stg_sel_3_noupd_info);
331 RTS_INFO(stg_sel_4_noupd_info);
332 RTS_INFO(stg_sel_5_noupd_info);
333 RTS_INFO(stg_sel_6_noupd_info);
334 RTS_INFO(stg_sel_7_noupd_info);
335 RTS_INFO(stg_sel_8_noupd_info);
336 RTS_INFO(stg_sel_9_noupd_info);
337 RTS_INFO(stg_sel_10_noupd_info);
338 RTS_INFO(stg_sel_11_noupd_info);
339 RTS_INFO(stg_sel_12_noupd_info);
340 RTS_INFO(stg_sel_13_noupd_info);
341 RTS_INFO(stg_sel_14_noupd_info);
342 RTS_INFO(stg_sel_15_noupd_info);
343
344 RTS_ENTRY(stg_sel_0_noupd_entry);
345 RTS_ENTRY(stg_sel_1_noupd_entry);
346 RTS_ENTRY(stg_sel_2_noupd_entry);
347 RTS_ENTRY(stg_sel_3_noupd_entry);
348 RTS_ENTRY(stg_sel_4_noupd_entry);
349 RTS_ENTRY(stg_sel_5_noupd_entry);
350 RTS_ENTRY(stg_sel_6_noupd_entry);
351 RTS_ENTRY(stg_sel_7_noupd_entry);
352 RTS_ENTRY(stg_sel_8_noupd_entry);
353 RTS_ENTRY(stg_sel_9_noupd_entry);
354 RTS_ENTRY(stg_sel_10_noupd_entry);
355 RTS_ENTRY(stg_sel_11_noupd_entry);
356 RTS_ENTRY(stg_sel_12_noupd_entry);
357 RTS_ENTRY(stg_sel_13_noupd_entry);
358 RTS_ENTRY(stg_sel_14_noupd_entry);
359 RTS_ENTRY(stg_sel_15_noupd_entry);
360
361 /* standard ap thunks */
362
363 RTS_THUNK_INFO(stg_ap_1_upd_info);
364 RTS_THUNK_INFO(stg_ap_2_upd_info);
365 RTS_THUNK_INFO(stg_ap_3_upd_info);
366 RTS_THUNK_INFO(stg_ap_4_upd_info);
367 RTS_THUNK_INFO(stg_ap_5_upd_info);
368 RTS_THUNK_INFO(stg_ap_6_upd_info);
369 RTS_THUNK_INFO(stg_ap_7_upd_info);
370
371 RTS_ENTRY(stg_ap_1_upd_entry);
372 RTS_ENTRY(stg_ap_2_upd_entry);
373 RTS_ENTRY(stg_ap_3_upd_entry);
374 RTS_ENTRY(stg_ap_4_upd_entry);
375 RTS_ENTRY(stg_ap_5_upd_entry);
376 RTS_ENTRY(stg_ap_6_upd_entry);
377 RTS_ENTRY(stg_ap_7_upd_entry);
378
379 /* standard application routines (see also rts/gen_apply.py, 
380  * and compiler/codeGen/CgStackery.lhs).
381  */
382 RTS_RET_INFO(stg_ap_v_info);
383 RTS_RET_INFO(stg_ap_f_info);
384 RTS_RET_INFO(stg_ap_d_info);
385 RTS_RET_INFO(stg_ap_l_info);
386 RTS_RET_INFO(stg_ap_n_info);
387 RTS_RET_INFO(stg_ap_p_info);
388 RTS_RET_INFO(stg_ap_pv_info);
389 RTS_RET_INFO(stg_ap_pp_info);
390 RTS_RET_INFO(stg_ap_ppv_info);
391 RTS_RET_INFO(stg_ap_ppp_info);
392 RTS_RET_INFO(stg_ap_pppv_info);
393 RTS_RET_INFO(stg_ap_pppp_info);
394 RTS_RET_INFO(stg_ap_ppppp_info);
395 RTS_RET_INFO(stg_ap_pppppp_info);
396
397 RTS_ENTRY(stg_ap_v_ret);
398 RTS_ENTRY(stg_ap_f_ret);
399 RTS_ENTRY(stg_ap_d_ret);
400 RTS_ENTRY(stg_ap_l_ret);
401 RTS_ENTRY(stg_ap_n_ret);
402 RTS_ENTRY(stg_ap_p_ret);
403 RTS_ENTRY(stg_ap_pv_ret);
404 RTS_ENTRY(stg_ap_pp_ret);
405 RTS_ENTRY(stg_ap_ppv_ret);
406 RTS_ENTRY(stg_ap_ppp_ret);
407 RTS_ENTRY(stg_ap_pppv_ret);
408 RTS_ENTRY(stg_ap_pppp_ret);
409 RTS_ENTRY(stg_ap_ppppp_ret);
410 RTS_ENTRY(stg_ap_pppppp_ret);
411
412 RTS_FUN(stg_ap_0_fast);
413 RTS_FUN(stg_ap_v_fast);
414 RTS_FUN(stg_ap_f_fast);
415 RTS_FUN(stg_ap_d_fast);
416 RTS_FUN(stg_ap_l_fast);
417 RTS_FUN(stg_ap_n_fast);
418 RTS_FUN(stg_ap_p_fast);
419 RTS_FUN(stg_ap_pv_fast);
420 RTS_FUN(stg_ap_pp_fast);
421 RTS_FUN(stg_ap_ppv_fast);
422 RTS_FUN(stg_ap_ppp_fast);
423 RTS_FUN(stg_ap_pppv_fast);
424 RTS_FUN(stg_ap_pppp_fast);
425 RTS_FUN(stg_ap_ppppp_fast);
426 RTS_FUN(stg_ap_pppppp_fast);
427 RTS_FUN(stg_PAP_apply);
428
429 /* standard GC & stack check entry points, all defined in HeapStackCheck.hc */
430
431 RTS_RET_INFO(stg_enter_info);
432 RTS_ENTRY(stg_enter_ret);
433
434 RTS_RET_INFO(stg_gc_void_info);
435 RTS_ENTRY(stg_gc_void_ret);
436
437 RTS_FUN(__stg_gc_enter_1);
438
439 RTS_FUN(stg_gc_noregs);
440
441 RTS_RET_INFO(stg_gc_unpt_r1_info);
442 RTS_ENTRY(stg_gc_unpt_r1_ret);
443 RTS_FUN(stg_gc_unpt_r1);
444
445 RTS_RET_INFO(stg_gc_unbx_r1_info);
446 RTS_ENTRY(stg_gc_unbx_r1_ret);
447 RTS_FUN(stg_gc_unbx_r1);
448
449 RTS_RET_INFO(stg_gc_f1_info);
450 RTS_ENTRY(stg_gc_f1_ret);
451 RTS_FUN(stg_gc_f1);
452
453 RTS_RET_INFO(stg_gc_d1_info);
454 RTS_ENTRY(stg_gc_d1_ret);
455 RTS_FUN(stg_gc_d1);
456
457 RTS_RET_INFO(stg_gc_l1_info);
458 RTS_ENTRY(stg_gc_l1_ret);
459 RTS_FUN(stg_gc_l1);
460
461 RTS_FUN(__stg_gc_fun);
462 RTS_RET_INFO(stg_gc_fun_info);
463 RTS_ENTRY(stg_gc_fun_ret);
464
465 RTS_RET_INFO(stg_gc_gen_info);
466 RTS_ENTRY(stg_gc_gen_ret);
467 RTS_FUN(stg_gc_gen);
468
469 RTS_ENTRY(stg_ut_1_0_unreg_ret);
470 RTS_RET_INFO(stg_ut_1_0_unreg_info);
471
472 RTS_FUN(stg_gc_gen_hp);
473 RTS_FUN(stg_gc_ut);
474 RTS_FUN(stg_gen_yield);
475 RTS_FUN(stg_yield_noregs);
476 RTS_FUN(stg_yield_to_interpreter);
477 RTS_FUN(stg_gen_block);
478 RTS_FUN(stg_block_noregs);
479 RTS_FUN(stg_block_1);
480 RTS_FUN(stg_block_blackhole);
481 RTS_FUN(stg_block_blackhole_finally);
482 RTS_FUN(stg_block_takemvar);
483 RTS_ENTRY(stg_block_takemvar_ret);
484 RTS_FUN(stg_block_putmvar);
485 RTS_ENTRY(stg_block_putmvar_ret);
486 #ifdef mingw32_HOST_OS
487 RTS_FUN(stg_block_async);
488 RTS_ENTRY(stg_block_async_ret);
489 RTS_FUN(stg_block_async_void);
490 RTS_ENTRY(stg_block_async_void_ret);
491 #endif
492 RTS_FUN(stg_block_stmwait);
493 RTS_FUN(stg_block_throwto);
494 RTS_ENTRY(stg_block_throwto_ret);
495 RTS_RET_INFO(stg_block_throwto_info);
496
497 /* Entry/exit points from StgStartup.cmm */
498
499 RTS_RET_INFO(stg_stop_thread_info);
500 RTS_ENTRY(stg_stop_thread_ret);
501
502 RTS_FUN(stg_returnToStackTop);
503 RTS_FUN(stg_returnToSched);
504 RTS_FUN(stg_returnToSchedNotPaused);
505 RTS_FUN(stg_returnToSchedButFirst);
506
507 RTS_FUN(stg_init_finish);
508 RTS_FUN(stg_init);
509
510 /* -----------------------------------------------------------------------------
511    PrimOps
512    -------------------------------------------------------------------------- */
513
514 RTS_FUN(plusIntegerzh_fast);
515 RTS_FUN(minusIntegerzh_fast);
516 RTS_FUN(timesIntegerzh_fast);
517 RTS_FUN(gcdIntegerzh_fast);
518 RTS_FUN(quotRemIntegerzh_fast);
519 RTS_FUN(quotIntegerzh_fast);
520 RTS_FUN(remIntegerzh_fast);
521 RTS_FUN(divExactIntegerzh_fast);
522 RTS_FUN(divModIntegerzh_fast);
523
524 RTS_FUN(cmpIntegerIntzh_fast);
525 RTS_FUN(cmpIntegerzh_fast);
526 RTS_FUN(integer2Intzh_fast);
527 RTS_FUN(integer2Wordzh_fast);
528 RTS_FUN(gcdIntegerIntzh_fast);
529 RTS_FUN(gcdIntzh_fast);
530
531 RTS_FUN(int2Integerzh_fast);
532 RTS_FUN(word2Integerzh_fast);
533
534 RTS_FUN(decodeFloatzh_fast);
535 RTS_FUN(decodeDoublezh_fast);
536
537 RTS_FUN(andIntegerzh_fast);
538 RTS_FUN(orIntegerzh_fast);
539 RTS_FUN(xorIntegerzh_fast);
540 RTS_FUN(complementIntegerzh_fast);
541
542 #ifdef SUPPORT_LONG_LONGS
543
544 RTS_FUN(int64ToIntegerzh_fast);
545 RTS_FUN(word64ToIntegerzh_fast);
546
547 #endif
548
549 RTS_FUN(unsafeThawArrayzh_fast);
550 RTS_FUN(newByteArrayzh_fast);
551 RTS_FUN(newPinnedByteArrayzh_fast);
552 RTS_FUN(newArrayzh_fast);
553
554 RTS_FUN(decodeFloatzh_fast);
555 RTS_FUN(decodeDoublezh_fast);
556
557 RTS_FUN(newMutVarzh_fast);
558 RTS_FUN(atomicModifyMutVarzh_fast);
559
560 RTS_FUN(isEmptyMVarzh_fast);
561 RTS_FUN(newMVarzh_fast);
562 RTS_FUN(takeMVarzh_fast);
563 RTS_FUN(putMVarzh_fast);
564 RTS_FUN(tryTakeMVarzh_fast);
565 RTS_FUN(tryPutMVarzh_fast);
566
567 RTS_FUN(waitReadzh_fast);
568 RTS_FUN(waitWritezh_fast);
569 RTS_FUN(delayzh_fast);
570 #ifdef mingw32_HOST_OS
571 RTS_FUN(asyncReadzh_fast);
572 RTS_FUN(asyncWritezh_fast);
573 RTS_FUN(asyncDoProczh_fast);
574 #endif
575
576 RTS_FUN(catchzh_fast);
577 RTS_FUN(raisezh_fast);
578 RTS_FUN(raiseIOzh_fast);
579
580 RTS_FUN(makeStableNamezh_fast);
581 RTS_FUN(makeStablePtrzh_fast);
582 RTS_FUN(deRefStablePtrzh_fast);
583
584 RTS_FUN(forkzh_fast);
585 RTS_FUN(forkOnzh_fast);
586 RTS_FUN(yieldzh_fast);
587 RTS_FUN(killThreadzh_fast);
588 RTS_FUN(blockAsyncExceptionszh_fast);
589 RTS_FUN(unblockAsyncExceptionszh_fast);
590 RTS_FUN(myThreadIdzh_fast);
591 RTS_FUN(labelThreadzh_fast);
592 RTS_FUN(isCurrentThreadBoundzh_fast);
593
594 RTS_FUN(mkWeakzh_fast);
595 RTS_FUN(finalizzeWeakzh_fast);
596 RTS_FUN(deRefWeakzh_fast);
597
598 RTS_FUN(newBCOzh_fast);
599 RTS_FUN(mkApUpd0zh_fast);
600
601 RTS_FUN(retryzh_fast);
602 RTS_FUN(catchRetryzh_fast);
603 RTS_FUN(catchSTMzh_fast);
604 RTS_FUN(atomicallyzh_fast);
605 RTS_FUN(newTVarzh_fast);
606 RTS_FUN(readTVarzh_fast);
607 RTS_FUN(writeTVarzh_fast);
608
609 #endif /* STGMISCCLOSURES_H */