3 * Copyright 2002-2003 Ximian Inc
4 * Copyright 2003-2011 Novell Inc
5 * Copyright 2011 Xamarin Inc
6 * Licensed under the MIT license. See LICENSE file in the project root for full license information.
8 #ifndef __MONO_LLVMONLY_RUNTIME_H__
9 #define __MONO_LLVMONLY_RUNTIME_H__
11 #include "mini-runtime.h"
12 #include "aot-runtime.h"
14 gpointer
mini_llvmonly_load_method (MonoMethod
*method
, gboolean caller_gsharedvt
, gboolean need_unbox
, gpointer
*out_arg
, MonoError
*error
);
15 MonoFtnDesc
* mini_llvmonly_load_method_ftndesc (MonoMethod
*method
, gboolean caller_gsharedvt
, gboolean need_unbox
, MonoError
*error
);
16 gpointer
mini_llvmonly_load_method_delegate (MonoMethod
*method
, gboolean caller_gsharedvt
, gboolean need_unbox
, gpointer
*out_arg
, MonoError
*error
);
17 gpointer
mini_llvmonly_get_delegate_arg (MonoMethod
*method
, gpointer method_ptr
);
18 gpointer
mini_llvmonly_add_method_wrappers (MonoMethod
*m
, gpointer compiled_method
, gboolean caller_gsharedvt
, gboolean add_unbox_tramp
, gpointer
*out_arg
);
19 MonoFtnDesc
*mini_llvmonly_create_ftndesc (MonoDomain
*domain
, gpointer addr
, gpointer arg
);
20 gpointer
mini_llvmonly_get_imt_trampoline (MonoVTable
*vtable
, MonoDomain
*domain
, MonoIMTCheckItem
**imt_entries
, int count
, gpointer fail_tramp
);
21 gpointer
mini_llvmonly_get_vtable_trampoline (MonoVTable
*vt
, int slot_index
, int index
);
23 G_EXTERN_C gpointer
mini_llvmonly_init_vtable_slot (MonoVTable
*vtable
, int slot
);
24 G_EXTERN_C gpointer
mini_llvmonly_resolve_vcall_gsharedvt (MonoObject
*this_obj
, int imt_slot
, MonoMethod
*imt_method
, gpointer
*out_arg
);
25 G_EXTERN_C gpointer
mini_llvmonly_resolve_iface_call_gsharedvt (MonoObject
*this_obj
, int imt_slot
, MonoMethod
*imt_method
, gpointer
*out_arg
);
26 G_EXTERN_C MonoFtnDesc
* mini_llvmonly_resolve_generic_virtual_call (MonoVTable
*vt
, int slot
, MonoMethod
*imt_method
);
27 G_EXTERN_C MonoFtnDesc
* mini_llvmonly_resolve_generic_virtual_iface_call (MonoVTable
*vt
, int imt_slot
, MonoMethod
*imt_method
);
28 G_EXTERN_C
void mini_llvmonly_init_delegate (MonoDelegate
*del
);
29 G_EXTERN_C
void mini_llvmonly_init_delegate_virtual (MonoDelegate
*del
, MonoObject
*target
, MonoMethod
*method
);
31 /* Used for regular llvm as well */
32 G_EXTERN_C
void mini_llvm_init_method (MonoAotFileInfo
*info
, gpointer aot_module
, gpointer method_info
, MonoVTable
*vtable
);
34 G_EXTERN_C
void mini_llvmonly_throw_nullref_exception (void);
36 G_EXTERN_C
void mini_llvmonly_throw_aot_failed_exception (const char *name
);