X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fmini-ppc.c;h=656ba1ed916e58c7eec2c00d683cea8fb106d1e6;hb=79283363f0f551d2b2d435d09bbec69f0b643675;hp=9e715e2dd71e52383fd04b63f250b2236dbd7ca9;hpb=051f49639d915710cc8495bdaeb93f5da592b549;p=mono.git diff --git a/mono/mini/mini-ppc.c b/mono/mini/mini-ppc.c index 9e715e2dd71..656ba1ed916 100644 --- a/mono/mini/mini-ppc.c +++ b/mono/mini/mini-ppc.c @@ -17,7 +17,7 @@ #include #include #include -#include +#include #include "mini-ppc.h" #ifdef TARGET_POWERPC64 @@ -627,8 +627,8 @@ mono_arch_init (void) mono_os_mutex_init_recursive (&mini_arch_mutex); - ss_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ|MONO_MMAP_32BIT); - bp_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ|MONO_MMAP_32BIT); + ss_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ|MONO_MMAP_32BIT, MONO_MEM_ACCOUNT_OTHER); + bp_trigger_page = mono_valloc (NULL, mono_pagesize (), MONO_MMAP_READ|MONO_MMAP_32BIT, MONO_MEM_ACCOUNT_OTHER); mono_mprotect (bp_trigger_page, mono_pagesize (), 0); mono_aot_register_jit_icall ("mono_ppc_throw_exception", mono_ppc_throw_exception); @@ -4743,19 +4743,20 @@ mono_arch_register_lowlevel_calls (void) #ifndef DISABLE_JIT void -mono_arch_patch_code (MonoCompile *cfg, MonoMethod *method, MonoDomain *domain, guint8 *code, MonoJumpInfo *ji, gboolean run_cctors) +mono_arch_patch_code (MonoCompile *cfg, MonoMethod *method, MonoDomain *domain, guint8 *code, MonoJumpInfo *ji, gboolean run_cctors, MonoError *error) { MonoJumpInfo *patch_info; gboolean compile_aot = !run_cctors; - MonoError error; + + mono_error_init (error); for (patch_info = ji; patch_info; patch_info = patch_info->next) { unsigned char *ip = patch_info->ip.i + code; unsigned char *target; gboolean is_fd = FALSE; - target = mono_resolve_patch_target (method, domain, code, patch_info, run_cctors, &error); - mono_error_raise_exception (&error); /* FIXME: don't raise here */ + target = mono_resolve_patch_target (method, domain, code, patch_info, run_cctors, error); + return_if_nok (error); if (compile_aot) { switch (patch_info->type) { @@ -5621,8 +5622,7 @@ mono_arch_emit_exceptions (MonoCompile *cfg) exc_throw_pos [i] = code; } - exc_class = mono_class_from_name (mono_defaults.corlib, "System", patch_info->data.name); - g_assert (exc_class); + exc_class = mono_class_load_from_name (mono_defaults.corlib, "System", patch_info->data.name); ppc_patch (ip, code); /*mono_add_patch_info (cfg, code - cfg->native_code, MONO_PATCH_INFO_EXC_NAME, patch_info->data.target);*/ @@ -5824,8 +5824,8 @@ mono_arch_free_jit_tls_data (MonoJitTlsData *tls) * LOCKING: called with the domain lock held */ gpointer -mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckItem **imt_entries, int count, - gpointer fail_tramp) +mono_arch_build_imt_trampoline (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckItem **imt_entries, int count, + gpointer fail_tramp) { int i; int size = 0; @@ -5862,7 +5862,7 @@ mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckI /* the initial load of the vtable address */ size += PPC_LOAD_SEQUENCE_LENGTH + LOADSTORE_SIZE; if (fail_tramp) { - code = mono_method_alloc_generic_virtual_thunk (domain, size); + code = mono_method_alloc_generic_virtual_trampoline (domain, size); } else { code = mono_domain_code_reserve (domain, size); } @@ -5955,7 +5955,7 @@ mono_arch_build_imt_thunk (MonoVTable *vtable, MonoDomain *domain, MonoIMTCheckI } if (!fail_tramp) - mono_stats.imt_thunks_size += code - start; + mono_stats.imt_trampolines_size += code - start; g_assert (code - start <= size); mono_arch_flush_icache (start, size);