5 #ifndef __MONO_JIT_ICALLS_H__
6 #define __MONO_JIT_ICALLS_H__
10 #include <mono/metadata/icalls.h>
12 G_EXTERN_C
void* mono_ldftn (MonoMethod
*method
);
14 G_EXTERN_C
void* mono_ldvirtfn (MonoObject
*obj
, MonoMethod
*method
);
16 G_EXTERN_C
void* mono_ldvirtfn_gshared (MonoObject
*obj
, MonoMethod
*method
);
18 G_EXTERN_C
void mono_helper_stelem_ref_check (MonoArray
*array
, MonoObject
*val
);
20 G_EXTERN_C gint64
mono_llmult (gint64 a
, gint64 b
);
22 G_EXTERN_C guint64
mono_llmult_ovf_un (guint64 a
, guint64 b
);
24 G_EXTERN_C guint64
mono_llmult_ovf (gint64 a
, gint64 b
);
26 G_EXTERN_C gint32
mono_idiv (gint32 a
, gint32 b
);
28 G_EXTERN_C guint32
mono_idiv_un (guint32 a
, guint32 b
);
30 G_EXTERN_C gint32
mono_irem (gint32 a
, gint32 b
);
32 G_EXTERN_C guint32
mono_irem_un (guint32 a
, guint32 b
);
34 G_EXTERN_C gint32
mono_imul (gint32 a
, gint32 b
);
36 G_EXTERN_C gint32
mono_imul_ovf (gint32 a
, gint32 b
);
38 G_EXTERN_C gint32
mono_imul_ovf_un (guint32 a
, guint32 b
);
40 G_EXTERN_C
double mono_fdiv (double a
, double b
);
42 G_EXTERN_C gint64
mono_lldiv (gint64 a
, gint64 b
);
44 G_EXTERN_C gint64
mono_llrem (gint64 a
, gint64 b
);
46 G_EXTERN_C guint64
mono_lldiv_un (guint64 a
, guint64 b
);
48 G_EXTERN_C guint64
mono_llrem_un (guint64 a
, guint64 b
);
50 G_EXTERN_C guint64
mono_lshl (guint64 a
, gint32 shamt
);
52 G_EXTERN_C guint64
mono_lshr_un (guint64 a
, gint32 shamt
);
54 G_EXTERN_C gint64
mono_lshr (gint64 a
, gint32 shamt
);
56 // For param_count > 4.
57 G_EXTERN_C MonoArray
*mono_array_new_n_icall (MonoMethod
*cm
, gint32 param_count
, intptr_t *params
);
59 G_EXTERN_C MonoArray
*mono_array_new_1 (MonoMethod
*cm
, guint32 length
);
61 G_EXTERN_C MonoArray
*mono_array_new_2 (MonoMethod
*cm
, guint32 length1
, guint32 length2
);
63 G_EXTERN_C MonoArray
*mono_array_new_3 (MonoMethod
*cm
, guint32 length1
, guint32 length2
, guint32 length3
);
65 G_EXTERN_C MonoArray
*mono_array_new_4 (MonoMethod
*cm
, guint32 length1
, guint32 length2
, guint32 length3
, guint32 length4
);
67 G_EXTERN_C gpointer
mono_class_static_field_address (MonoDomain
*domain
, MonoClassField
*field
);
69 G_EXTERN_C gpointer
mono_ldtoken_wrapper (MonoImage
*image
, int token
, MonoGenericContext
*context
);
71 G_EXTERN_C gpointer
mono_ldtoken_wrapper_generic_shared (MonoImage
*image
, int token
, MonoMethod
*method
);
73 G_EXTERN_C guint64
mono_fconv_u8 (double v
);
74 G_EXTERN_C guint64
mono_fconv_u8_2 (double v
);
76 G_EXTERN_C guint64
mono_rconv_u8 (float v
);
78 G_EXTERN_C gint64
mono_fconv_i8 (double v
);
80 G_EXTERN_C guint32
mono_fconv_u4 (double v
);
81 G_EXTERN_C guint32
mono_fconv_u4_2 (double v
);
83 G_EXTERN_C guint32
mono_rconv_u4 (float v
);
85 G_EXTERN_C gint64
mono_fconv_ovf_i8 (double v
);
87 G_EXTERN_C guint64
mono_fconv_ovf_u8 (double v
);
89 G_EXTERN_C guint64
mono_fconv_ovf_u8_un (double v
);
91 G_EXTERN_C gint64
mono_rconv_i8 (float v
);
93 G_EXTERN_C gint64
mono_rconv_ovf_i8 (float v
);
95 G_EXTERN_C guint64
mono_rconv_ovf_u8 (float v
);
97 G_EXTERN_C guint64
mono_rconv_ovf_u8_un (float v
);
99 G_EXTERN_C
double mono_lconv_to_r8 (gint64 a
);
101 G_EXTERN_C
double mono_conv_to_r8 (gint32 a
);
103 G_EXTERN_C
double mono_conv_to_r4 (gint32 a
);
105 G_EXTERN_C
float mono_lconv_to_r4 (gint64 a
);
107 G_EXTERN_C
double mono_conv_to_r8_un (guint32 a
);
109 G_EXTERN_C
double mono_lconv_to_r8_un (guint64 a
);
111 G_EXTERN_C gpointer
mono_helper_compile_generic_method (MonoObject
*obj
, MonoMethod
*method
, gpointer
*this_arg
);
115 ves_icall_mono_ldstr (MonoDomain
*domain
, MonoImage
*image
, guint32 idx
);
117 G_EXTERN_C MonoString
*mono_helper_ldstr (MonoImage
*image
, guint32 idx
);
119 G_EXTERN_C MonoString
*mono_helper_ldstr_mscorlib (guint32 idx
);
121 G_EXTERN_C MonoObject
*mono_helper_newobj_mscorlib (guint32 idx
);
123 G_EXTERN_C
double mono_fsub (double a
, double b
);
125 G_EXTERN_C
double mono_fadd (double a
, double b
);
127 G_EXTERN_C
double mono_fmul (double a
, double b
);
129 G_EXTERN_C
double mono_fneg (double a
);
131 G_EXTERN_C
double mono_fconv_r4 (double a
);
133 G_EXTERN_C gint8
mono_fconv_i1 (double a
);
135 G_EXTERN_C gint16
mono_fconv_i2 (double a
);
137 G_EXTERN_C gint32
mono_fconv_i4 (double a
);
139 G_EXTERN_C guint8
mono_fconv_u1 (double a
);
141 G_EXTERN_C guint16
mono_fconv_u2 (double a
);
143 G_EXTERN_C gboolean
mono_fcmp_eq (double a
, double b
);
145 G_EXTERN_C gboolean
mono_fcmp_ge (double a
, double b
);
147 G_EXTERN_C gboolean
mono_fcmp_gt (double a
, double b
);
149 G_EXTERN_C gboolean
mono_fcmp_le (double a
, double b
);
151 G_EXTERN_C gboolean
mono_fcmp_lt (double a
, double b
);
153 G_EXTERN_C gboolean
mono_fcmp_ne_un (double a
, double b
);
155 G_EXTERN_C gboolean
mono_fcmp_ge_un (double a
, double b
);
157 G_EXTERN_C gboolean
mono_fcmp_gt_un (double a
, double b
);
159 G_EXTERN_C gboolean
mono_fcmp_le_un (double a
, double b
);
161 G_EXTERN_C gboolean
mono_fcmp_lt_un (double a
, double b
);
163 G_EXTERN_C gboolean
mono_fceq (double a
, double b
);
165 G_EXTERN_C gboolean
mono_fcgt (double a
, double b
);
167 G_EXTERN_C gboolean
mono_fcgt_un (double a
, double b
);
169 G_EXTERN_C gboolean
mono_fclt (double a
, double b
);
171 G_EXTERN_C gboolean
mono_fclt_un (double a
, double b
);
173 G_EXTERN_C
double mono_fload_r4 (float *ptr
);
175 G_EXTERN_C
void mono_fstore_r4 (double val
, float *ptr
);
177 G_EXTERN_C guint32
mono_fload_r4_arg (double val
);
179 G_EXTERN_C
double mono_fmod (double a
, double b
);
181 G_EXTERN_C
void mono_break (void);
183 G_EXTERN_C MonoException
*mono_create_corlib_exception_0 (guint32 token
);
185 G_EXTERN_C MonoException
*mono_create_corlib_exception_1 (guint32 token
, MonoString
*arg
);
187 G_EXTERN_C MonoException
*mono_create_corlib_exception_2 (guint32 token
, MonoString
*arg1
, MonoString
*arg2
);
189 G_EXTERN_C MonoObject
* mono_object_castclass_unbox (MonoObject
*obj
, MonoClass
*klass
);
191 G_EXTERN_C gpointer
mono_get_native_calli_wrapper (MonoImage
*image
, MonoMethodSignature
*sig
, gpointer func
);
193 G_EXTERN_C MonoObject
* mono_object_isinst_with_cache (MonoObject
*obj
, MonoClass
*klass
, gpointer
*cache
);
195 G_EXTERN_C MonoObject
* mono_object_castclass_with_cache (MonoObject
*obj
, MonoClass
*klass
, gpointer
*cache
);
199 ves_icall_runtime_class_init (MonoVTable
*vtable
);
202 mono_generic_class_init (MonoVTable
*vtable
);
206 ves_icall_mono_delegate_ctor (MonoObject
*this_obj
, MonoObject
*target
, gpointer addr
);
210 ves_icall_mono_delegate_ctor_interp (MonoObject
*this_obj
, MonoObject
*target
, gpointer addr
);
212 G_EXTERN_C MonoObject
* mono_gsharedvt_constrained_call (gpointer mp
, MonoMethod
*cmethod
, MonoClass
*klass
, gboolean deref_arg
, gpointer
*args
);
214 G_EXTERN_C
void mono_gsharedvt_value_copy (gpointer dest
, gpointer src
, MonoClass
*klass
);
216 G_EXTERN_C gpointer
mono_fill_class_rgctx (MonoVTable
*vtable
, int index
);
218 G_EXTERN_C gpointer
mono_fill_method_rgctx (MonoMethodRuntimeGenericContext
*mrgctx
, int index
);
220 G_EXTERN_C MonoObject
* mono_get_assembly_object (MonoImage
*image
);
222 G_EXTERN_C MonoObject
* mono_get_method_object (MonoMethod
*method
);
224 G_EXTERN_C
double mono_ckfinite (double d
);
226 G_EXTERN_C
void mono_throw_method_access (MonoMethod
*caller
, MonoMethod
*callee
);
228 G_EXTERN_C
void mono_throw_bad_image (void);
230 G_EXTERN_C
void mono_dummy_jit_icall (void);
232 #endif /* __MONO_JIT_ICALLS_H__ */