[runtime] Fix the loaded llvm build.
authorZoltan Varga <vargaz@gmail.com>
Tue, 5 Jan 2016 14:06:19 +0000 (09:06 -0500)
committerZoltan Varga <vargaz@gmail.com>
Tue, 5 Jan 2016 14:06:19 +0000 (09:06 -0500)
mono/mini/llvm-runtime.cpp
mono/mini/mini-llvm-loaded.c
mono/mini/mini-llvm.c
mono/mini/mini-llvm.h
mono/mini/mini.h

index 3af75e6352f1cd0570edf317cc2414624c68a28e..c747e022b38f585e3da61438ad41f954061e5722 100644 (file)
@@ -8,10 +8,14 @@ extern "C" {
 void
 mono_llvm_cpp_throw_exception (void)
 {
+#ifdef MONO_LLVM_LOADED
+       g_assert_not_reached ();
+#else
        gint32 *ex = NULL;
 
        /* The generated code catches an int32* */
        throw ex;
+#endif
 }
 
 }
index cecc654cc5b8d648329740c046b875f87690d2d8..baa55cc1ff1d43c8e241f49890ed24d212275db4 100644 (file)
@@ -31,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)
@@ -97,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)
 {
@@ -129,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);
index 5d3081deeeb130181b4ff91b927ec59655bc1c83..62e58eab9376a519bc6cfcaccfd2bd44df358a5a 100644 (file)
@@ -6833,7 +6833,7 @@ mono_llvm_create_vars (MonoCompile *cfg)
        sig = mono_method_signature (cfg->method);
        if (cfg->gsharedvt && cfg->llvm_only) {
                if (mini_is_gsharedvt_variable_signature (sig) && sig->ret->type != MONO_TYPE_VOID) {
-                       cfg->vret_addr = mono_compile_create_var (cfg, &mono_defaults.int_class->byval_arg, OP_ARG);
+                       cfg->vret_addr = mono_compile_create_var (cfg, &mono_get_int32_class ()->byval_arg, OP_ARG);
                        if (G_UNLIKELY (cfg->verbose_level > 1)) {
                                printf ("vret_addr = ");
                                mono_print_ins (cfg->vret_addr);
index bf7bdb0e4d4e803ae65620e51f692c3285205322..b7ec0167d226bbfb142375f3d578fbe32ead03a4 100644 (file)
@@ -26,7 +26,7 @@ void     mono_llvm_clear_exception (void);
 MonoObject *mono_llvm_load_exception (void);
 void     mono_llvm_reset_exception (void);
 void     mono_llvm_raise_exception (MonoException *e);
-void     mono_llvm_create_vars (MonoCompile *cfg);
+void     mono_llvm_create_vars (MonoCompile *cfg) MONO_LLVM_INTERNAL;
 
 gboolean mini_llvm_init                     (void);
 
index 3df8d8cd3e05ae40f29b5d624c1418d305cfbad5..7fb2eaf8c333e0d9ee2ba225a42b7ee2ba84967d 100644 (file)
@@ -2712,7 +2712,7 @@ gboolean mono_arch_is_int_overflow              (void *sigctx, void *info);
 void     mono_arch_invalidate_method            (MonoJitInfo *ji, void *func, gpointer func_arg);
 guint32  mono_arch_get_patch_offset             (guint8 *code);
 gpointer*mono_arch_get_delegate_method_ptr_addr (guint8* code, mgreg_t *regs);
-void     mono_arch_create_vars                  (MonoCompile *cfg);
+void     mono_arch_create_vars                  (MonoCompile *cfg) MONO_LLVM_INTERNAL;
 void     mono_arch_save_unwind_info             (MonoCompile *cfg);
 void     mono_arch_register_lowlevel_calls      (void);
 gpointer mono_arch_get_unbox_trampoline         (MonoMethod *m, gpointer addr);