9wasm_invoke_dd (
void *target_func, MonoInterpMethodArguments *margs)
11 typedef double (*T)(
double arg_0);
12 T func = (T)target_func;
13 double res = func (mono_wasm_interp_method_args_get_darg (margs, 0));
14 void *retval = mono_wasm_interp_method_args_get_retval (margs);
15 *(
double*)retval = res;
19wasm_invoke_ddd (
void *target_func, MonoInterpMethodArguments *margs)
21 typedef double (*T)(
double arg_0,
double arg_1);
22 T func = (T)target_func;
23 double res = func (mono_wasm_interp_method_args_get_darg (margs, 0), mono_wasm_interp_method_args_get_darg (margs, 1));
24 void *retval = mono_wasm_interp_method_args_get_retval (margs);
25 *(
double*)retval = res;
29wasm_invoke_dddd (
void *target_func, MonoInterpMethodArguments *margs)
31 typedef double (*T)(
double arg_0,
double arg_1,
double arg_2);
32 T func = (T)target_func;
33 double res = func (mono_wasm_interp_method_args_get_darg (margs, 0), mono_wasm_interp_method_args_get_darg (margs, 1), mono_wasm_interp_method_args_get_darg (margs, 2));
34 void *retval = mono_wasm_interp_method_args_get_retval (margs);
35 *(
double*)retval = res;
39wasm_invoke_ddi (
void *target_func, MonoInterpMethodArguments *margs)
41 typedef double (*T)(
double arg_0,
int arg_1);
42 T func = (T)target_func;
43 double res = func (mono_wasm_interp_method_args_get_darg (margs, 0), mono_wasm_interp_method_args_get_iarg (margs, 0));
44 void *retval = mono_wasm_interp_method_args_get_retval (margs);
45 *(
double*)retval = res;
49wasm_invoke_ff (
void *target_func, MonoInterpMethodArguments *margs)
51 typedef float (*T)(
float arg_0);
52 T func = (T)target_func;
53 float res = func (mono_wasm_interp_method_args_get_farg (margs, 0));
54 void *retval = mono_wasm_interp_method_args_get_retval (margs);
55 *(
float*)retval = res;
59wasm_invoke_fff (
void *target_func, MonoInterpMethodArguments *margs)
61 typedef float (*T)(
float arg_0,
float arg_1);
62 T func = (T)target_func;
63 float res = func (mono_wasm_interp_method_args_get_farg (margs, 0), mono_wasm_interp_method_args_get_farg (margs, 1));
64 void *retval = mono_wasm_interp_method_args_get_retval (margs);
65 *(
float*)retval = res;
69wasm_invoke_ffff (
void *target_func, MonoInterpMethodArguments *margs)
71 typedef float (*T)(
float arg_0,
float arg_1,
float arg_2);
72 T func = (T)target_func;
73 float res = func (mono_wasm_interp_method_args_get_farg (margs, 0), mono_wasm_interp_method_args_get_farg (margs, 1), mono_wasm_interp_method_args_get_farg (margs, 2));
74 void *retval = mono_wasm_interp_method_args_get_retval (margs);
75 *(
float*)retval = res;
79wasm_invoke_ffi (
void *target_func, MonoInterpMethodArguments *margs)
81 typedef float (*T)(
float arg_0,
int arg_1);
82 T func = (T)target_func;
83 float res = func (mono_wasm_interp_method_args_get_farg (margs, 0), mono_wasm_interp_method_args_get_iarg (margs, 0));
84 void *retval = mono_wasm_interp_method_args_get_retval (margs);
85 *(
float*)retval = res;
89wasm_invoke_i (
void *target_func, MonoInterpMethodArguments *margs)
91 typedef int (*T)(void);
92 T func = (T)target_func;
94 void *retval = mono_wasm_interp_method_args_get_retval (margs);
99wasm_invoke_ii (
void *target_func, MonoInterpMethodArguments *margs)
101 typedef int (*T)(
int arg_0);
102 T func = (T)target_func;
103 int res = func (mono_wasm_interp_method_args_get_iarg (margs, 0));
104 void *retval = mono_wasm_interp_method_args_get_retval (margs);
109wasm_invoke_iii (
void *target_func, MonoInterpMethodArguments *margs)
111 typedef int (*T)(
int arg_0,
int arg_1);
112 T func = (T)target_func;
113 int res = func (mono_wasm_interp_method_args_get_iarg (margs, 0), mono_wasm_interp_method_args_get_iarg (margs, 1));
114 void *retval = mono_wasm_interp_method_args_get_retval (margs);
119wasm_invoke_iiii (
void *target_func, MonoInterpMethodArguments *margs)
121 typedef int (*T)(
int arg_0,
int arg_1,
int arg_2);
122 T func = (T)target_func;
123 int res = func (mono_wasm_interp_method_args_get_iarg (margs, 0), mono_wasm_interp_method_args_get_iarg (margs, 1), mono_wasm_interp_method_args_get_iarg (margs, 2));
124 void *retval = mono_wasm_interp_method_args_get_retval (margs);
129wasm_invoke_iiiii (
void *target_func, MonoInterpMethodArguments *margs)
131 typedef int (*T)(
int arg_0,
int arg_1,
int arg_2,
int arg_3);
132 T func = (T)target_func;
133 int res = func (mono_wasm_interp_method_args_get_iarg (margs, 0), mono_wasm_interp_method_args_get_iarg (margs, 1), mono_wasm_interp_method_args_get_iarg (margs, 2), mono_wasm_interp_method_args_get_iarg (margs, 3));
134 void *retval = mono_wasm_interp_method_args_get_retval (margs);
139wasm_invoke_iiiiii (
void *target_func, MonoInterpMethodArguments *margs)
141 typedef int (*T)(
int arg_0,
int arg_1,
int arg_2,
int arg_3,
int arg_4);
142 T func = (T)target_func;
143 int res = func (mono_wasm_interp_method_args_get_iarg (margs, 0), mono_wasm_interp_method_args_get_iarg (margs, 1), mono_wasm_interp_method_args_get_iarg (margs, 2), mono_wasm_interp_method_args_get_iarg (margs, 3), mono_wasm_interp_method_args_get_iarg (margs, 4));
144 void *retval = mono_wasm_interp_method_args_get_retval (margs);
149wasm_invoke_iiiiiii (
void *target_func, MonoInterpMethodArguments *margs)
151 typedef int (*T)(
int arg_0,
int arg_1,
int arg_2,
int arg_3,
int arg_4,
int arg_5);
152 T func = (T)target_func;
153 int res = func (mono_wasm_interp_method_args_get_iarg (margs, 0), mono_wasm_interp_method_args_get_iarg (margs, 1), mono_wasm_interp_method_args_get_iarg (margs, 2), mono_wasm_interp_method_args_get_iarg (margs, 3), mono_wasm_interp_method_args_get_iarg (margs, 4), mono_wasm_interp_method_args_get_iarg (margs, 5));
154 void *retval = mono_wasm_interp_method_args_get_retval (margs);
159wasm_invoke_iiiiiiii (
void *target_func, MonoInterpMethodArguments *margs)
161 typedef int (*T)(
int arg_0,
int arg_1,
int arg_2,
int arg_3,
int arg_4,
int arg_5,
int arg_6);
162 T func = (T)target_func;
163 int res = func (mono_wasm_interp_method_args_get_iarg (margs, 0), mono_wasm_interp_method_args_get_iarg (margs, 1), mono_wasm_interp_method_args_get_iarg (margs, 2), mono_wasm_interp_method_args_get_iarg (margs, 3), mono_wasm_interp_method_args_get_iarg (margs, 4), mono_wasm_interp_method_args_get_iarg (margs, 5), mono_wasm_interp_method_args_get_iarg (margs, 6));
164 void *retval = mono_wasm_interp_method_args_get_retval (margs);
169wasm_invoke_iiiiiiiii (
void *target_func, MonoInterpMethodArguments *margs)
171 typedef int (*T)(
int arg_0,
int arg_1,
int arg_2,
int arg_3,
int arg_4,
int arg_5,
int arg_6,
int arg_7);
172 T func = (T)target_func;
173 int res = func (mono_wasm_interp_method_args_get_iarg (margs, 0), mono_wasm_interp_method_args_get_iarg (margs, 1), mono_wasm_interp_method_args_get_iarg (margs, 2), mono_wasm_interp_method_args_get_iarg (margs, 3), mono_wasm_interp_method_args_get_iarg (margs, 4), mono_wasm_interp_method_args_get_iarg (margs, 5), mono_wasm_interp_method_args_get_iarg (margs, 6), mono_wasm_interp_method_args_get_iarg (margs, 7));
174 void *retval = mono_wasm_interp_method_args_get_retval (margs);
179wasm_invoke_iiiil (
void *target_func, MonoInterpMethodArguments *margs)
181 typedef int (*T)(
int arg_0,
int arg_1,
int arg_2, int64_t arg_3);
182 T func = (T)target_func;
183 int res = func (mono_wasm_interp_method_args_get_iarg (margs, 0), mono_wasm_interp_method_args_get_iarg (margs, 1), mono_wasm_interp_method_args_get_iarg (margs, 2), mono_wasm_interp_method_args_get_larg (margs, 3));
184 void *retval = mono_wasm_interp_method_args_get_retval (margs);
189wasm_invoke_iil (
void *target_func, MonoInterpMethodArguments *margs)
191 typedef int (*T)(
int arg_0, int64_t arg_1);
192 T func = (T)target_func;
193 int res = func (mono_wasm_interp_method_args_get_iarg (margs, 0), mono_wasm_interp_method_args_get_larg (margs, 1));
194 void *retval = mono_wasm_interp_method_args_get_retval (margs);
199wasm_invoke_iill (
void *target_func, MonoInterpMethodArguments *margs)
201 typedef int (*T)(
int arg_0, int64_t arg_1, int64_t arg_2);
202 T func = (T)target_func;
203 int res = func (mono_wasm_interp_method_args_get_iarg (margs, 0), mono_wasm_interp_method_args_get_larg (margs, 1), mono_wasm_interp_method_args_get_larg (margs, 3));
204 void *retval = mono_wasm_interp_method_args_get_retval (margs);
209wasm_invoke_iilli (
void *target_func, MonoInterpMethodArguments *margs)
211 typedef int (*T)(
int arg_0, int64_t arg_1, int64_t arg_2,
int arg_3);
212 T func = (T)target_func;
213 int res = func (mono_wasm_interp_method_args_get_iarg (margs, 0), mono_wasm_interp_method_args_get_larg (margs, 1), mono_wasm_interp_method_args_get_larg (margs, 3), mono_wasm_interp_method_args_get_iarg (margs, 5));
214 void *retval = mono_wasm_interp_method_args_get_retval (margs);
219wasm_invoke_l (
void *target_func, MonoInterpMethodArguments *margs)
221 typedef int64_t (*T)(void);
222 T func = (T)target_func;
223 int64_t res = func ();
224 void *retval = mono_wasm_interp_method_args_get_retval (margs);
225 *(int64_t*)retval = res;
229wasm_invoke_li (
void *target_func, MonoInterpMethodArguments *margs)
231 typedef int64_t (*T)(
int arg_0);
232 T func = (T)target_func;
233 int64_t res = func (mono_wasm_interp_method_args_get_iarg (margs, 0));
234 void *retval = mono_wasm_interp_method_args_get_retval (margs);
235 *(int64_t*)retval = res;
239wasm_invoke_liiil (
void *target_func, MonoInterpMethodArguments *margs)
241 typedef int64_t (*T)(
int arg_0,
int arg_1,
int arg_2, int64_t arg_3);
242 T func = (T)target_func;
243 int64_t res = func (mono_wasm_interp_method_args_get_iarg (margs, 0), mono_wasm_interp_method_args_get_iarg (margs, 1), mono_wasm_interp_method_args_get_iarg (margs, 2), mono_wasm_interp_method_args_get_larg (margs, 3));
244 void *retval = mono_wasm_interp_method_args_get_retval (margs);
245 *(int64_t*)retval = res;
249wasm_invoke_lil (
void *target_func, MonoInterpMethodArguments *margs)
251 typedef int64_t (*T)(
int arg_0, int64_t arg_1);
252 T func = (T)target_func;
253 int64_t res = func (mono_wasm_interp_method_args_get_iarg (margs, 0), mono_wasm_interp_method_args_get_larg (margs, 1));
254 void *retval = mono_wasm_interp_method_args_get_retval (margs);
255 *(int64_t*)retval = res;
259wasm_invoke_lili (
void *target_func, MonoInterpMethodArguments *margs)
261 typedef int64_t (*T)(
int arg_0, int64_t arg_1,
int arg_2);
262 T func = (T)target_func;
263 int64_t res = func (mono_wasm_interp_method_args_get_iarg (margs, 0), mono_wasm_interp_method_args_get_larg (margs, 1), mono_wasm_interp_method_args_get_iarg (margs, 3));
264 void *retval = mono_wasm_interp_method_args_get_retval (margs);
265 *(int64_t*)retval = res;
269wasm_invoke_lill (
void *target_func, MonoInterpMethodArguments *margs)
271 typedef int64_t (*T)(
int arg_0, int64_t arg_1, int64_t arg_2);
272 T func = (T)target_func;
273 int64_t res = func (mono_wasm_interp_method_args_get_iarg (margs, 0), mono_wasm_interp_method_args_get_larg (margs, 1), mono_wasm_interp_method_args_get_larg (margs, 3));
274 void *retval = mono_wasm_interp_method_args_get_retval (margs);
275 *(int64_t*)retval = res;
279wasm_invoke_v (
void *target_func, MonoInterpMethodArguments *margs)
281 typedef void (*T)(void);
282 T func = (T)target_func;
287wasm_invoke_vi (
void *target_func, MonoInterpMethodArguments *margs)
289 typedef void (*T)(
int arg_0);
290 T func = (T)target_func;
291 func (mono_wasm_interp_method_args_get_iarg (margs, 0));
295wasm_invoke_vii (
void *target_func, MonoInterpMethodArguments *margs)
297 typedef void (*T)(
int arg_0,
int arg_1);
298 T func = (T)target_func;
299 func (mono_wasm_interp_method_args_get_iarg (margs, 0), mono_wasm_interp_method_args_get_iarg (margs, 1));
303wasm_invoke_viii (
void *target_func, MonoInterpMethodArguments *margs)
305 typedef void (*T)(
int arg_0,
int arg_1,
int arg_2);
306 T func = (T)target_func;
307 func (mono_wasm_interp_method_args_get_iarg (margs, 0), mono_wasm_interp_method_args_get_iarg (margs, 1), mono_wasm_interp_method_args_get_iarg (margs, 2));
311wasm_invoke_viiii (
void *target_func, MonoInterpMethodArguments *margs)
313 typedef void (*T)(
int arg_0,
int arg_1,
int arg_2,
int arg_3);
314 T func = (T)target_func;
315 func (mono_wasm_interp_method_args_get_iarg (margs, 0), mono_wasm_interp_method_args_get_iarg (margs, 1), mono_wasm_interp_method_args_get_iarg (margs, 2), mono_wasm_interp_method_args_get_iarg (margs, 3));
319wasm_invoke_viiiii (
void *target_func, MonoInterpMethodArguments *margs)
321 typedef void (*T)(
int arg_0,
int arg_1,
int arg_2,
int arg_3,
int arg_4);
322 T func = (T)target_func;
323 func (mono_wasm_interp_method_args_get_iarg (margs, 0), mono_wasm_interp_method_args_get_iarg (margs, 1), mono_wasm_interp_method_args_get_iarg (margs, 2), mono_wasm_interp_method_args_get_iarg (margs, 3), mono_wasm_interp_method_args_get_iarg (margs, 4));
327wasm_invoke_viiiiii (
void *target_func, MonoInterpMethodArguments *margs)
329 typedef void (*T)(
int arg_0,
int arg_1,
int arg_2,
int arg_3,
int arg_4,
int arg_5);
330 T func = (T)target_func;
331 func (mono_wasm_interp_method_args_get_iarg (margs, 0), mono_wasm_interp_method_args_get_iarg (margs, 1), mono_wasm_interp_method_args_get_iarg (margs, 2), mono_wasm_interp_method_args_get_iarg (margs, 3), mono_wasm_interp_method_args_get_iarg (margs, 4), mono_wasm_interp_method_args_get_iarg (margs, 5));
334static void* interp_to_native_invokes[] = {
350 wasm_invoke_iiiiiiii,
351 wasm_invoke_iiiiiiiii,
370static const char* interp_to_native_signatures[] = {
406static unsigned int interp_to_native_signatures_count = 34;
409compare_icall_tramp (
const void *key,
const void *elem)
411 return strcmp (key, *(
void**)elem);
415mono_wasm_interp_to_native_callback (
char* cookie)
417 void* p = bsearch (cookie, interp_to_native_signatures, interp_to_native_signatures_count,
sizeof (
void*), compare_icall_tramp);
420 int idx = (
const char**)p - (
const char**)interp_to_native_signatures;
421 return interp_to_native_invokes [idx];