X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fmini-llvm.h;h=0942c9a7d42370d478d2ef1e3a1fd1fceaf1b3c6;hb=HEAD;hp=eec8bb57d8fa87199b6599e87c5daf822b3d072b;hpb=ae3b35aa23f89afc78957b808ee8112b3670c8c7;p=mono.git diff --git a/mono/mini/mini-llvm.h b/mono/mini/mini-llvm.h index eec8bb57d8f..0942c9a7d42 100644 --- a/mono/mini/mini-llvm.h +++ b/mono/mini/mini-llvm.h @@ -1,122 +1,28 @@ -/* - * Handle the differences between the llvm backend beeing embedded - * or loaded at runtime. +/** + * \file */ -#ifdef MONO_LLVM_LOADED -int mono_llvm_load (const char* bpath) MONO_INTERNAL; - -#ifdef MONO_LLVM_IN_MINI - -#ifdef __MACH__ -#include -#endif - -typedef void (*MonoLLVMVoidFunc)(void); -typedef void (*MonoLLVMCFGFunc)(MonoCompile *cfg); -typedef void (*MonoLLVMEmitCallFunc)(MonoCompile *cfg, MonoCallInst *call); -typedef void (*MonoLLVMCreateAotFunc)(const char *got_symbol, gboolean external_symbols, gboolean emit_dwarf); -typedef void (*MonoLLVMEmitAotFunc)(const char *filename, const char *cu_name); -typedef void (*MonoLLVMFreeDomainFunc)(MonoDomain *domain); - -static MonoLLVMVoidFunc mono_llvm_init_fptr; -static MonoLLVMVoidFunc mono_llvm_cleanup_fptr; -static MonoLLVMCFGFunc mono_llvm_emit_method_fptr; -static MonoLLVMEmitCallFunc mono_llvm_emit_call_fptr; -static MonoLLVMCreateAotFunc mono_llvm_create_aot_module_fptr; -static MonoLLVMEmitAotFunc mono_llvm_emit_aot_module_fptr; -static MonoLLVMCFGFunc mono_llvm_check_method_supported_fptr; -static MonoLLVMFreeDomainFunc mono_llvm_free_domain_info_fptr; - -void -mono_llvm_init (void) -{ - mono_llvm_init_fptr (); -} - -void -mono_llvm_cleanup (void) -{ - mono_llvm_cleanup_fptr (); -} - -void -mono_llvm_emit_method (MonoCompile *cfg) -{ - mono_llvm_emit_method_fptr (cfg); -} - -void -mono_llvm_emit_call (MonoCompile *cfg, MonoCallInst *call) -{ - mono_llvm_emit_call_fptr (cfg, call); -} - -void -mono_llvm_create_aot_module (const char *got_symbol, gboolean external_symbols, gboolean emit_dwarf) -{ - g_assert (mono_llvm_create_aot_module_fptr); - mono_llvm_create_aot_module_fptr (got_symbol, external_symbols, emit_dwarf); -} - -void -mono_llvm_emit_aot_module (const char *filename, const char *cu_name) -{ - g_assert (mono_llvm_emit_aot_module_fptr); - mono_llvm_emit_aot_module_fptr (filename, cu_name); -} - -void -mono_llvm_check_method_supported (MonoCompile *cfg) -{ - mono_llvm_check_method_supported_fptr (cfg); -} - -void -mono_llvm_free_domain_info (MonoDomain *domain) -{ - if (mono_llvm_free_domain_info_fptr) - mono_llvm_free_domain_info_fptr (domain); -} - -int -mono_llvm_load (const char* bpath) -{ - char *err = NULL; - MonoDl *llvm_lib = mono_dl_open_runtime_lib ("mono-llvm", MONO_DL_LAZY, &err); - - if (!llvm_lib) { - g_warning ("llvm load failed: %s\n", err); - g_free (err); - return FALSE; - } - - err = mono_dl_symbol (llvm_lib, "mono_llvm_init", (void**)&mono_llvm_init_fptr); - if (err) goto symbol_error; - err = mono_dl_symbol (llvm_lib, "mono_llvm_cleanup", (void**)&mono_llvm_cleanup_fptr); - if (err) goto symbol_error; - err = mono_dl_symbol (llvm_lib, "mono_llvm_emit_method", (void**)&mono_llvm_emit_method_fptr); - if (err) goto symbol_error; - err = mono_dl_symbol (llvm_lib, "mono_llvm_emit_call", (void**)&mono_llvm_emit_call_fptr); - if (err) goto symbol_error; - err = mono_dl_symbol (llvm_lib, "mono_llvm_create_aot_module", (void**)&mono_llvm_create_aot_module_fptr); - if (err) goto symbol_error; - err = mono_dl_symbol (llvm_lib, "mono_llvm_emit_aot_module", (void**)&mono_llvm_emit_aot_module_fptr); - if (err) goto symbol_error; - err = mono_dl_symbol (llvm_lib, "mono_llvm_check_method_supported", (void**)&mono_llvm_check_method_supported_fptr); - if (err) goto symbol_error; - err = mono_dl_symbol (llvm_lib, "mono_llvm_free_domain_info", (void**)&mono_llvm_free_domain_info_fptr); - if (err) goto symbol_error; - return TRUE; -symbol_error: - g_warning ("llvm symbol load failed: %s\n", err); - g_free (err); - return FALSE; -} +#ifndef __MONO_MINI_LLVM_H__ +#define __MONO_MINI_LLVM_H__ + +#include "mini.h" + +/* LLVM backend */ +/* KEEP THIS IN SYNCH WITH mini-llvm-loaded.c */ +void mono_llvm_init (void) MONO_LLVM_INTERNAL; +void mono_llvm_cleanup (void) MONO_LLVM_INTERNAL; +void mono_llvm_emit_method (MonoCompile *cfg) MONO_LLVM_INTERNAL; +void mono_llvm_emit_call (MonoCompile *cfg, MonoCallInst *call) MONO_LLVM_INTERNAL; +void mono_llvm_create_aot_module (MonoAssembly *assembly, const char *global_prefix, int initial_got_size, gboolean emit_dwarf, gboolean static_link, gboolean llvm_only) MONO_LLVM_INTERNAL; +void mono_llvm_emit_aot_module (const char *filename, const char *cu_name) MONO_LLVM_INTERNAL; +void mono_llvm_emit_aot_file_info (MonoAotFileInfo *info, gboolean has_jitted_code) MONO_LLVM_INTERNAL; +void mono_llvm_emit_aot_data (const char *symbol, guint8 *data, int data_len) MONO_LLVM_INTERNAL; +void mono_llvm_check_method_supported (MonoCompile *cfg) MONO_LLVM_INTERNAL; +void mono_llvm_free_domain_info (MonoDomain *domain) MONO_LLVM_INTERNAL; +MONO_API void mono_personality (void); +int mono_llvm_load (const char* bpath); +void mono_llvm_create_vars (MonoCompile *cfg) MONO_LLVM_INTERNAL; + +gboolean mini_llvm_init (void); #endif - -#else -#define mono_llvm_load(bpath) TRUE -#endif /* MONO_LLVM_LOADED */ -