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
}
}
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)
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)
{
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);
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);
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);
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);