X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fmini-llvm-loaded.c;h=baa55cc1ff1d43c8e241f49890ed24d212275db4;hb=1f5d985270df9390f9cb558656763ea428c14e2c;hp=c93a83728120c36d2acf7129423f905f4cb52856;hpb=bd52e33266aee6ffbddf313a99db7fffc497a095;p=mono.git diff --git a/mono/mini/mini-llvm-loaded.c b/mono/mini/mini-llvm-loaded.c index c93a8372812..baa55cc1ff1 100644 --- a/mono/mini/mini-llvm-loaded.c +++ b/mono/mini/mini-llvm-loaded.c @@ -4,6 +4,7 @@ */ #include "mini.h" +#include "mini-llvm.h" #ifdef MONO_LLVM_LOADED @@ -14,7 +15,7 @@ typedef void (*MonoLLVMVoidFunc)(void); typedef void (*MonoLLVMCFGFunc)(MonoCompile *cfg); typedef void (*MonoLLVMEmitCallFunc)(MonoCompile *cfg, MonoCallInst *call); -typedef void (*MonoLLVMCreateAotFunc)(MonoAssembly *assembly, const char *global_prefix, gboolean emit_dwarf, gboolean static_link); +typedef void (*MonoLLVMCreateAotFunc)(MonoAssembly *assembly, const char *global_prefix, gboolean emit_dwarf, gboolean static_link, gboolean llvm_only); typedef void (*MonoLLVMEmitAotFunc)(const char *filename, const char *cu_name); typedef void (*MonoLLVMEmitAotInfoFunc)(MonoAotFileInfo *info, gboolean has_jitted_code); typedef void (*MonoLLVMEmitAotDataFunc)(const char *symbol, guint8 *data, int data_len); @@ -30,6 +31,7 @@ static MonoLLVMCFGFunc mono_llvm_check_method_supported_fptr; static MonoLLVMEmitAotInfoFunc mono_llvm_emit_aot_file_info_fptr; static MonoLLVMEmitAotDataFunc mono_llvm_emit_aot_data_fptr; static MonoLLVMFreeDomainFunc mono_llvm_free_domain_info_fptr; +static void (*mono_llvm_create_vars_fptr) (MonoCompile *cfg); void mono_llvm_init (void) @@ -56,10 +58,10 @@ mono_llvm_emit_call (MonoCompile *cfg, MonoCallInst *call) } void -mono_llvm_create_aot_module (MonoAssembly *assembly, const char *global_prefix, gboolean emit_dwarf, gboolean static_link) +mono_llvm_create_aot_module (MonoAssembly *assembly, const char *global_prefix, gboolean emit_dwarf, gboolean static_link, gboolean llvm_only) { g_assert (mono_llvm_create_aot_module_fptr); - mono_llvm_create_aot_module_fptr (assembly, global_prefix, emit_dwarf, static_link); + mono_llvm_create_aot_module_fptr (assembly, global_prefix, emit_dwarf, static_link, llvm_only); } void @@ -96,6 +98,13 @@ mono_llvm_emit_aot_data (const char *symbol, guint8 *data, int data_len) mono_llvm_emit_aot_data_fptr (symbol, data, data_len); } +void +mono_llvm_create_vars (MonoCompile *cfg) +{ + if (mono_llvm_create_vars_fptr) + mono_llvm_create_vars_fptr (cfg); +} + int mono_llvm_load (const char* bpath) { @@ -128,6 +137,8 @@ mono_llvm_load (const char* bpath) if (err) goto symbol_error; err = mono_dl_symbol (llvm_lib, "mono_llvm_emit_aot_data", (void**)&mono_llvm_emit_aot_data_fptr); if (err) goto symbol_error; + err = mono_dl_symbol (llvm_lib, "mono_llvm_create_vars", (void**)&mono_llvm_create_vars_fptr); + if (err) goto symbol_error; return TRUE; symbol_error: g_warning ("llvm symbol load failed: %s\n", err);