X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Ftramp-sparc.c;h=0fae9ac9b6aa6f1fe04aaea8f8c4f487956b7c11;hb=4bd1f7ba7252579e97d480e3008b3a3f9fc52817;hp=895d0f2c80ca3c4f7a4910fe2437f5e73e5bdd00;hpb=b87a4bc7a02faa4fe3672ce042668687f4f010eb;p=mono.git diff --git a/mono/mini/tramp-sparc.c b/mono/mini/tramp-sparc.c index 895d0f2c80c..0fae9ac9b6a 100644 --- a/mono/mini/tramp-sparc.c +++ b/mono/mini/tramp-sparc.c @@ -21,6 +21,7 @@ /* * mono_arch_get_unbox_trampoline: + * @gsctx: the generic sharing context * @m: method pointer * @addr: pointer to native code for @m * @@ -29,12 +30,12 @@ * unboxing before calling the method */ gpointer -mono_arch_get_unbox_trampoline (MonoMethod *m, gpointer addr) +mono_arch_get_unbox_trampoline (MonoGenericSharingContext *gsctx, MonoMethod *m, gpointer addr) { guint8 *code, *start; int this_pos = 4, reg; - if (!mono_method_signature (m)->ret->byref && MONO_TYPE_ISSTRUCT (mono_method_signature (m)->ret)) + if (MONO_TYPE_ISSTRUCT (mono_method_signature (m)->ret)) this_pos = 8; start = code = mono_global_codeman_reserve (36); @@ -58,7 +59,7 @@ mono_arch_get_unbox_trampoline (MonoMethod *m, gpointer addr) } void -mono_arch_patch_callsite (guint8 *code, guint8 *addr) +mono_arch_patch_callsite (guint8 *method_start, guint8 *code, guint8 *addr) { if (sparc_inst_op (*(guint32*)code) == 0x1) { sparc_call_simple (code, (guint8*)addr - (guint8*)code); @@ -66,20 +67,20 @@ mono_arch_patch_callsite (guint8 *code, guint8 *addr) } void -mono_arch_patch_plt_entry (guint8 *code, guint8 *addr) +mono_arch_patch_plt_entry (guint8 *code, gpointer *got, mgreg_t *regs, guint8 *addr) { g_assert_not_reached (); } void -mono_arch_nullify_class_init_trampoline (guint8 *code, gssize *regs) +mono_arch_nullify_class_init_trampoline (guint8 *code, mgreg_t *regs) { /* Patch calling code */ sparc_nop (code); } void -mono_arch_nullify_plt_entry (guint8 *code) +mono_arch_nullify_plt_entry (guint8 *code, mgreg_t *regs) { g_assert_not_reached (); } @@ -181,7 +182,7 @@ mono_arch_create_trampoline_code (MonoTrampolineType tramp_type) sparc_sti_imm (code, sparc_o0, sparc_sp, MONO_SPARC_STACK_BIAS + 304); /* Check for thread interruption */ - sparc_set (code, (guint8*)mono_thread_interruption_checkpoint, sparc_o7); + sparc_set (code, (guint8*)mono_thread_force_interruption_checkpoint, sparc_o7); sparc_jmpl (code, sparc_o7, sparc_g0, sparc_o7); sparc_nop (code); @@ -242,9 +243,7 @@ mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_ty tramp = mono_get_trampoline_code (tramp_type); - mono_domain_lock (domain); - code = buf = mono_code_manager_reserve (domain->code_mp, TRAMPOLINE_SIZE * 4); - mono_domain_unlock (domain); + code = buf = mono_domain_code_reserve (domain, TRAMPOLINE_SIZE * 4); /* We have to use g5 here because there is no other free register */ sparc_set (code, tramp, sparc_g5); @@ -269,17 +268,10 @@ mono_arch_create_specific_trampoline (gpointer arg1, MonoTrampolineType tramp_ty return buf; } -/* - * This method is only called when running in the Mono Debugger. - */ gpointer -mono_debugger_create_notification_function (void) +mono_arch_create_rgctx_lazy_fetch_trampoline (guint32 encoded_offset) { - guint8 *ptr, *buf; - - ptr = buf = mono_global_codeman_reserve (16); - + /* FIXME: implement! */ g_assert_not_reached (); - - return ptr; + return NULL; }