Merge pull request #5714 from alexischr/update_bockbuild
[mono.git] / mono / mini / jit-icalls.h
1 /**
2  * \file
3  */
4
5 #ifndef __MONO_JIT_ICALLS_H__
6 #define __MONO_JIT_ICALLS_H__
7
8 #include <math.h>
9
10 #include "mini.h"
11
12 void* mono_ldftn (MonoMethod *method);
13
14 void* mono_ldvirtfn (MonoObject *obj, MonoMethod *method);
15
16 void* mono_ldvirtfn_gshared (MonoObject *obj, MonoMethod *method);
17
18 void mono_helper_stelem_ref_check (MonoArray *array, MonoObject *val);
19
20 gint64 mono_llmult (gint64 a, gint64 b);
21
22 guint64 mono_llmult_ovf_un (guint64 a, guint64 b);
23
24 guint64 mono_llmult_ovf (gint64 a, gint64 b);
25
26 gint32 mono_idiv (gint32 a, gint32 b);
27
28 guint32 mono_idiv_un (guint32 a, guint32 b);
29
30 gint32 mono_irem (gint32 a, gint32 b);
31
32 guint32 mono_irem_un (guint32 a, guint32 b);
33
34 gint32 mono_imul (gint32 a, gint32 b);
35
36 gint32 mono_imul_ovf (gint32 a, gint32 b);
37
38 gint32 mono_imul_ovf_un (guint32 a, guint32 b);
39
40 double mono_fdiv (double a, double b);
41
42 gint64 mono_lldiv (gint64 a, gint64 b);
43
44 gint64 mono_llrem (gint64 a, gint64 b);
45
46 guint64 mono_lldiv_un (guint64 a, guint64 b);
47
48 guint64 mono_llrem_un (guint64 a, guint64 b);
49
50 guint64 mono_lshl (guint64 a, gint32 shamt);
51
52 guint64 mono_lshr_un (guint64 a, gint32 shamt);
53
54 gint64 mono_lshr (gint64 a, gint32 shamt);
55
56 MonoArray *mono_array_new_va (MonoMethod *cm, ...);
57
58 MonoArray *mono_array_new_1 (MonoMethod *cm, guint32 length);
59
60 MonoArray *mono_array_new_2 (MonoMethod *cm, guint32 length1, guint32 length2);
61
62 MonoArray *mono_array_new_3 (MonoMethod *cm, guint32 length1, guint32 length2, guint32 length3);
63
64 MonoArray *mono_array_new_4 (MonoMethod *cm, guint32 length1, guint32 length2, guint32 length3, guint32 length4);
65
66 gpointer mono_class_static_field_address (MonoDomain *domain, MonoClassField *field);
67
68 gpointer mono_ldtoken_wrapper (MonoImage *image, int token, MonoGenericContext *context);
69
70 gpointer mono_ldtoken_wrapper_generic_shared (MonoImage *image, int token, MonoMethod *method);
71
72 guint64 mono_fconv_u8 (double v);
73
74 guint64 mono_rconv_u8 (float v);
75
76 gint64 mono_fconv_i8 (double v);
77
78 guint32 mono_fconv_u4 (double v);
79
80 gint64 mono_fconv_ovf_i8 (double v);
81
82 guint64 mono_fconv_ovf_u8 (double v);
83
84 gint64 mono_rconv_i8 (float v);
85
86 gint64 mono_rconv_ovf_i8 (float v);
87
88 guint64 mono_rconv_ovf_u8 (float v);
89
90 double mono_lconv_to_r8 (gint64 a);
91
92 double mono_conv_to_r8 (gint32 a);
93
94 double mono_conv_to_r4 (gint32 a);
95
96 float mono_lconv_to_r4 (gint64 a);
97
98 double mono_conv_to_r8_un (guint32 a);
99
100 double mono_lconv_to_r8_un (guint64 a);
101
102 gpointer mono_helper_compile_generic_method (MonoObject *obj, MonoMethod *method, gpointer *this_arg);
103
104 MonoString*
105 ves_icall_mono_ldstr (MonoDomain *domain, MonoImage *image, guint32 idx);
106
107 MonoString *mono_helper_ldstr (MonoImage *image, guint32 idx);
108
109 MonoString *mono_helper_ldstr_mscorlib (guint32 idx);
110
111 MonoObject *mono_helper_newobj_mscorlib (guint32 idx);
112
113 double mono_fsub (double a, double b);
114
115 double mono_fadd (double a, double b);
116
117 double mono_fmul (double a, double b);
118
119 double mono_fneg (double a);
120
121 double mono_fconv_r4 (double a);
122
123 gint8 mono_fconv_i1 (double a);
124
125 gint16 mono_fconv_i2 (double a);
126
127 gint32 mono_fconv_i4 (double a);
128
129 guint8 mono_fconv_u1 (double a);
130
131 guint16 mono_fconv_u2 (double a);
132
133 gboolean mono_fcmp_eq (double a, double b);
134
135 gboolean mono_fcmp_ge (double a, double b);
136
137 gboolean mono_fcmp_gt (double a, double b);
138
139 gboolean mono_fcmp_le (double a, double b);
140
141 gboolean mono_fcmp_lt (double a, double b);
142
143 gboolean mono_fcmp_ne_un (double a, double b);
144
145 gboolean mono_fcmp_ge_un (double a, double b);
146
147 gboolean mono_fcmp_gt_un (double a, double b);
148
149 gboolean mono_fcmp_le_un (double a, double b);
150
151 gboolean mono_fcmp_lt_un (double a, double b);
152
153 gboolean mono_fceq (double a, double b);
154
155 gboolean mono_fcgt (double a, double b);
156
157 gboolean mono_fcgt_un (double a, double b);
158
159 gboolean mono_fclt (double a, double b);
160
161 gboolean mono_fclt_un (double a, double b);
162
163 gboolean mono_isfinite (double a);
164
165 double   mono_fload_r4 (float *ptr);
166
167 void     mono_fstore_r4 (double val, float *ptr);
168
169 guint32  mono_fload_r4_arg (double val);
170
171 void     mono_break (void);
172
173 MonoException *mono_create_corlib_exception_0 (guint32 token);
174
175 MonoException *mono_create_corlib_exception_1 (guint32 token, MonoString *arg);
176
177 MonoException *mono_create_corlib_exception_2 (guint32 token, MonoString *arg1, MonoString *arg2);
178
179 MonoObject* mono_object_castclass_unbox (MonoObject *obj, MonoClass *klass);
180
181 gpointer mono_get_native_calli_wrapper (MonoImage *image, MonoMethodSignature *sig, gpointer func);
182
183 MonoObject*
184 mono_object_isinst_with_cache (MonoObject *obj, MonoClass *klass, gpointer *cache);
185
186 MonoObject*
187 mono_object_castclass_with_cache (MonoObject *obj, MonoClass *klass, gpointer *cache);
188
189 void
190 ves_icall_runtime_class_init (MonoVTable *vtable);
191
192 void
193 mono_generic_class_init (MonoVTable *vtable);
194
195 void
196 ves_icall_mono_delegate_ctor (MonoObject *this_obj, MonoObject *target, gpointer addr);
197
198 MonoObject*
199 mono_gsharedvt_constrained_call (gpointer mp, MonoMethod *cmethod, MonoClass *klass, gboolean deref_arg, gpointer *args);
200
201 void mono_gsharedvt_value_copy (gpointer dest, gpointer src, MonoClass *klass);
202
203 gpointer mono_fill_class_rgctx (MonoVTable *vtable, int index);
204
205 gpointer mono_fill_method_rgctx (MonoMethodRuntimeGenericContext *mrgctx, int index);
206
207 gpointer mono_resolve_iface_call_gsharedvt (MonoObject *this_obj, int imt_slot, MonoMethod *imt_method, gpointer *out_arg);
208
209 gpointer mono_resolve_vcall_gsharedvt (MonoObject *this_obj, int imt_slot, MonoMethod *imt_method, gpointer *out_arg);
210
211 MonoFtnDesc* mono_resolve_generic_virtual_call (MonoVTable *vt, int slot, MonoMethod *imt_method);
212
213 MonoFtnDesc* mono_resolve_generic_virtual_iface_call (MonoVTable *vt, int imt_slot, MonoMethod *imt_method);
214
215 gpointer mono_init_vtable_slot (MonoVTable *vtable, int slot);
216
217 void mono_llvmonly_init_delegate (MonoDelegate *del);
218
219 void mono_llvmonly_init_delegate_virtual (MonoDelegate *del, MonoObject *target, MonoMethod *method);
220
221 MonoObject* mono_get_assembly_object (MonoImage *image);
222
223 MonoObject* mono_get_method_object (MonoMethod *method);
224
225 double mono_ckfinite (double d);
226
227 void mono_throw_method_access (MonoMethod *caller, MonoMethod *callee);
228
229 void mono_dummy_jit_icall (void);
230
231 #endif /* __MONO_JIT_ICALLS_H__ */