[project @ 2000-08-02 14:13:26 by rrt]
[ghc-hetmet.git] / ghc / includes / StgMiscClosures.h
1 /* -----------------------------------------------------------------------------
2  * $Id: StgMiscClosures.h,v 1.18 2000/08/02 14:13:27 rrt Exp $
3  *
4  * (c) The GHC Team, 1998-1999
5  *
6  * Entry code for various built-in closure types.
7  *
8  * ---------------------------------------------------------------------------*/
9
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.
13  */
14
15 /* entry code */
16
17 STGFUN(IND_entry);
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);
27 #ifdef SMP
28 STGFUN(WHITEHOLE_entry);
29 #endif
30 #ifdef TICKY_TICKY
31 STGFUN(SE_BLACKHOLE_entry);
32 STGFUN(SE_CAF_BLACKHOLE_entry);
33 #endif
34 #if defined(PAR) || defined(GRAN)
35 STGFUN(RBH_entry);
36 #endif
37 STGFUN(BCO_entry);
38 STGFUN(EVACUATED_entry);
39 STGFUN(FOREIGN_entry);
40 STGFUN(WEAK_entry);
41 STGFUN(NO_FINALIZER_entry);
42 STGFUN(DEAD_WEAK_entry);
43 STGFUN(STABLE_NAME_entry);
44 STGFUN(TSO_entry);
45 STGFUN(FULL_MVAR_entry);
46 STGFUN(EMPTY_MVAR_entry);
47 STGFUN(ARR_WORDS_entry);
48 STGFUN(MUT_ARR_PTRS_entry);
49 STGFUN(MUT_ARR_PTRS_FROZEN_entry);
50 STGFUN(MUT_VAR_entry);
51 STGFUN(END_TSO_QUEUE_entry);
52 STGFUN(MUT_CONS_entry);
53 STGFUN(END_MUT_LIST_entry);
54 STGFUN(dummy_ret_entry);
55
56 /* this is the NIL ptr for a TSO queue (e.g. runnable queue) */
57 #define END_TSO_QUEUE  ((StgTSO *)(void*)&END_TSO_QUEUE_closure)
58 #if defined(PAR) || defined(GRAN)
59 /* this is the NIL ptr for a blocking queue */
60 # define END_BQ_QUEUE  ((StgBlockingQueueElement *)(void*)&END_TSO_QUEUE_closure)
61 /* this is the NIL ptr for a blocked fetch queue (as in PendingFetches in GUM) */
62 # define END_BF_QUEUE  ((StgBlockedFetch *)(void*)&END_TSO_QUEUE_closure)
63 #endif
64
65 /* info tables */
66
67 extern DLL_IMPORT_RTS const StgInfoTable IND_info;
68 extern DLL_IMPORT_RTS const StgInfoTable IND_STATIC_info;
69 extern DLL_IMPORT_RTS const StgInfoTable IND_PERM_info;
70 extern DLL_IMPORT_RTS const StgInfoTable IND_OLDGEN_info;
71 extern DLL_IMPORT_RTS const StgInfoTable IND_OLDGEN_PERM_info;
72 extern DLL_IMPORT_RTS const StgInfoTable CAF_UNENTERED_info;
73 extern DLL_IMPORT_RTS const StgInfoTable CAF_ENTERED_info;
74 extern DLL_IMPORT_RTS const StgInfoTable CAF_BLACKHOLE_info;
75 extern DLL_IMPORT_RTS const StgInfoTable BLACKHOLE_info;
76 extern DLL_IMPORT_RTS const StgInfoTable BLACKHOLE_BQ_info;
77 #ifdef SMP
78 extern DLL_IMPORT_RTS const StgInfoTable WHITEHOLE_info;
79 #endif
80 #ifdef TICKY_TICKY
81 extern DLL_IMPORT_RTS const StgInfoTable SE_BLACKHOLE_info;
82 extern DLL_IMPORT_RTS const StgInfoTable SE_CAF_BLACKHOLE_info;
83 #endif
84 #if defined(PAR) || defined(GRAN)
85 extern DLL_IMPORT_RTS const StgInfoTable RBH_info;
86 #endif
87 extern DLL_IMPORT_RTS const StgInfoTable BCO_info;
88 extern DLL_IMPORT_RTS const StgInfoTable EVACUATED_info;
89 extern DLL_IMPORT_RTS const StgInfoTable FOREIGN_info;
90 extern DLL_IMPORT_RTS const StgInfoTable WEAK_info;
91 extern DLL_IMPORT_RTS const StgInfoTable DEAD_WEAK_info;
92 extern DLL_IMPORT_RTS const StgInfoTable STABLE_NAME_info;
93 extern DLL_IMPORT_RTS const StgInfoTable FULL_MVAR_info;
94 extern DLL_IMPORT_RTS const StgInfoTable EMPTY_MVAR_info;
95 extern DLL_IMPORT_RTS const StgInfoTable TSO_info;
96 extern DLL_IMPORT_RTS const StgInfoTable ARR_WORDS_info;
97 extern DLL_IMPORT_RTS const StgInfoTable MUT_ARR_WORDS_info;
98 extern DLL_IMPORT_RTS const StgInfoTable MUT_ARR_PTRS_info;
99 extern DLL_IMPORT_RTS const StgInfoTable MUT_ARR_PTRS_FROZEN_info;
100 extern DLL_IMPORT_RTS const StgInfoTable MUT_VAR_info;
101 extern DLL_IMPORT_RTS const StgInfoTable END_TSO_QUEUE_info;
102 extern DLL_IMPORT_RTS const StgInfoTable MUT_CONS_info;
103 extern DLL_IMPORT_RTS const StgInfoTable END_MUT_LIST_info;
104 extern DLL_IMPORT_RTS const StgInfoTable catch_info;
105 extern DLL_IMPORT_RTS const StgInfoTable seq_info;
106 extern DLL_IMPORT_RTS const StgInfoTable dummy_ret_info;
107
108 #ifdef INTERPRETER
109
110 EXTFUN(Hugs_CONSTR_entry);
111
112 extern const vec_info_8 ret_bco_info;
113
114 #endif /* INTERPRETER */
115
116 /* closures */
117
118 extern DLL_IMPORT_DATA StgClosure END_TSO_QUEUE_closure;
119 extern DLL_IMPORT_DATA StgClosure END_MUT_LIST_closure;
120 extern DLL_IMPORT_DATA StgClosure NO_FINALIZER_closure;
121 extern DLL_IMPORT_DATA StgClosure dummy_ret_closure;
122 extern DLL_IMPORT_DATA StgClosure forceIO_closure;
123
124 extern DLL_IMPORT_DATA StgIntCharlikeClosure CHARLIKE_closure[];
125 extern DLL_IMPORT_DATA StgIntCharlikeClosure INTLIKE_closure[];
126
127 /* standard entry points */
128
129 /* EXTFUN_RTS(stg_error_entry); No longer used */
130
131   /* (see also below  -- KSW 1998-12) */
132
133 /* standard selector thunks */
134
135 EXTINFO_RTS __sel_0_upd_info;
136 EXTINFO_RTS __sel_1_upd_info;
137 EXTINFO_RTS __sel_2_upd_info;
138 EXTINFO_RTS __sel_3_upd_info;
139 EXTINFO_RTS __sel_4_upd_info;
140 EXTINFO_RTS __sel_5_upd_info;
141 EXTINFO_RTS __sel_6_upd_info;
142 EXTINFO_RTS __sel_7_upd_info;
143 EXTINFO_RTS __sel_8_upd_info;
144 EXTINFO_RTS __sel_8_upd_info;
145 EXTINFO_RTS __sel_9_upd_info;
146 EXTINFO_RTS __sel_10_upd_info;
147 EXTINFO_RTS __sel_11_upd_info;
148 EXTINFO_RTS __sel_12_upd_info;
149 EXTINFO_RTS __sel_13_upd_info;
150 EXTINFO_RTS __sel_14_upd_info;
151 EXTINFO_RTS __sel_15_upd_info;
152
153 EXTINFO_RTS __sel_0_noupd_info;
154 EXTINFO_RTS __sel_1_noupd_info;
155 EXTINFO_RTS __sel_2_noupd_info;
156 EXTINFO_RTS __sel_3_noupd_info;
157 EXTINFO_RTS __sel_4_noupd_info;
158 EXTINFO_RTS __sel_5_noupd_info;
159 EXTINFO_RTS __sel_6_noupd_info;
160 EXTINFO_RTS __sel_7_noupd_info;
161 EXTINFO_RTS __sel_8_noupd_info;
162 EXTINFO_RTS __sel_9_noupd_info;
163 EXTINFO_RTS __sel_10_noupd_info;
164 EXTINFO_RTS __sel_11_noupd_info;
165 EXTINFO_RTS __sel_12_noupd_info;
166 EXTINFO_RTS __sel_13_noupd_info;
167 EXTINFO_RTS __sel_14_noupd_info;
168 EXTINFO_RTS __sel_15_noupd_info;
169
170   /* and their standard entry points  -- KSW 1998-12 */
171
172 EXTFUN_RTS(__sel_0_upd_entry);
173 EXTFUN_RTS(__sel_1_upd_entry);
174 EXTFUN_RTS(__sel_2_upd_entry);
175 EXTFUN_RTS(__sel_3_upd_entry);
176 EXTFUN_RTS(__sel_4_upd_entry);
177 EXTFUN_RTS(__sel_5_upd_entry);
178 EXTFUN_RTS(__sel_6_upd_entry);
179 EXTFUN_RTS(__sel_7_upd_entry);
180 EXTFUN_RTS(__sel_8_upd_entry);
181 EXTFUN_RTS(__sel_8_upd_entry);
182 EXTFUN_RTS(__sel_9_upd_entry);
183 EXTFUN_RTS(__sel_10_upd_entry);
184 EXTFUN_RTS(__sel_11_upd_entry);
185 EXTFUN_RTS(__sel_12_upd_entry);
186 EXTFUN_RTS(__sel_13_upd_entry);
187 EXTFUN_RTS(__sel_14_upd_entry);
188 EXTFUN_RTS(__sel_15_upd_entry);
189
190 EXTFUN_RTS(__sel_0_noupd_entry);
191 EXTFUN_RTS(__sel_1_noupd_entry);
192 EXTFUN_RTS(__sel_2_noupd_entry);
193 EXTFUN_RTS(__sel_3_noupd_entry);
194 EXTFUN_RTS(__sel_4_noupd_entry);
195 EXTFUN_RTS(__sel_5_noupd_entry);
196 EXTFUN_RTS(__sel_6_noupd_entry);
197 EXTFUN_RTS(__sel_7_noupd_entry);
198 EXTFUN_RTS(__sel_8_noupd_entry);
199 EXTFUN_RTS(__sel_9_noupd_entry);
200 EXTFUN_RTS(__sel_10_noupd_entry);
201 EXTFUN_RTS(__sel_11_noupd_entry);
202 EXTFUN_RTS(__sel_12_noupd_entry);
203 EXTFUN_RTS(__sel_13_noupd_entry);
204 EXTFUN_RTS(__sel_14_noupd_entry);
205 EXTFUN_RTS(__sel_15_noupd_entry);
206
207 /* standard ap thunks */
208
209 EXTINFO_RTS __ap_1_upd_info;
210 EXTINFO_RTS __ap_2_upd_info;
211 EXTINFO_RTS __ap_3_upd_info;
212 EXTINFO_RTS __ap_4_upd_info;
213 EXTINFO_RTS __ap_5_upd_info;
214 EXTINFO_RTS __ap_6_upd_info;
215 EXTINFO_RTS __ap_7_upd_info;
216 EXTINFO_RTS __ap_8_upd_info;
217