Author: lupus
Date: 2007-10-15 04:18:50 -0400 (Mon, 15 Oct 2007)
New Revision: 87480

Modified:
   trunk/mono/mono/mini/ChangeLog
   trunk/mono/mono/mini/mini.c
   trunk/mono/mono/mini/mini.h
Log:


Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <[EMAIL PROTECTED]>

        * mini.c, mini.h: register the common vtable trampoline if the
        architecture supports it.



Modified: trunk/mono/mono/mini/ChangeLog
===================================================================
--- trunk/mono/mono/mini/ChangeLog      2007-10-15 08:17:49 UTC (rev 87479)
+++ trunk/mono/mono/mini/ChangeLog      2007-10-15 08:18:50 UTC (rev 87480)
@@ -1,4 +1,9 @@
 
+Mon Oct 15 10:35:12 CEST 2007 Paolo Molaro <[EMAIL PROTECTED]>
+
+       * mini.c, mini.h: register the common vtable trampoline if the
+       architecture supports it.
+
 Mon Oct 15 09:50:52 CEST 2007 Paolo Molaro <[EMAIL PROTECTED]>
 
        * cpu-amd64.md: use the correct max length for tls_get.

Modified: trunk/mono/mono/mini/mini.c
===================================================================
--- trunk/mono/mono/mini/mini.c 2007-10-15 08:17:49 UTC (rev 87479)
+++ trunk/mono/mono/mini/mini.c 2007-10-15 08:18:50 UTC (rev 87480)
@@ -12037,6 +12037,17 @@
 }
 #endif
 
+#ifdef MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
+static gpointer
+mini_get_vtable_trampoline (void)
+{
+       static gpointer tramp = NULL;
+       if (!tramp)
+               tramp =  mono_arch_create_specific_trampoline 
(MONO_FAKE_VTABLE_METHOD, MONO_TRAMPOLINE_GENERIC, mono_get_root_domain (), 
NULL);
+       return tramp;
+}
+#endif
+
 static void
 mini_parse_debug_options (void)
 {
@@ -12196,7 +12207,10 @@
 #ifdef MONO_ARCH_HAVE_IMT
        mono_install_imt_thunk_builder (mono_arch_build_imt_thunk);
        mono_install_imt_trampoline (mini_get_imt_trampoline ());
+#if MONO_ARCH_COMMON_VTABLE_TRAMPOLINE
+       mono_install_vtable_trampoline (mini_get_vtable_trampoline ());
 #endif
+#endif
        mono_icall_init ();
 
        mono_add_internal_call 
("System.Diagnostics.StackFrame::get_frame_info", 

Modified: trunk/mono/mono/mini/mini.h
===================================================================
--- trunk/mono/mono/mini/mini.h 2007-10-15 08:17:49 UTC (rev 87479)
+++ trunk/mono/mono/mini/mini.h 2007-10-15 08:18:50 UTC (rev 87480)
@@ -51,6 +51,7 @@
 #define inst_ms_word data.op[MINI_MS_WORD_IDX].const_val
 
 #define MONO_FAKE_IMT_METHOD ((MonoMethod*)GINT_TO_POINTER(-1))
+#define MONO_FAKE_VTABLE_METHOD ((MonoMethod*)GINT_TO_POINTER(-2))
 
 /* Version number of the AOT file format */
 #define MONO_AOT_FILE_VERSION "32"
@@ -1033,6 +1034,7 @@
 void     mono_arch_invalidate_method            (MonoJitInfo *ji, void *func, 
gpointer func_arg) MONO_INTERNAL;
 guint32  mono_arch_get_patch_offset             (guint8 *code) MONO_INTERNAL;
 gpointer*mono_arch_get_vcall_slot_addr          (guint8* code, gpointer *regs) 
MONO_INTERNAL;
+gpointer mono_arch_get_vcall_slot               (guint8 *code, gpointer *regs, 
int *displacement) MONO_INTERNAL;
 gpointer*mono_arch_get_delegate_method_ptr_addr (guint8* code, gpointer *regs) 
MONO_INTERNAL;
 void     mono_arch_create_vars                  (MonoCompile *cfg) 
MONO_INTERNAL;
 void     mono_arch_save_unwind_info             (MonoCompile *cfg) 
MONO_INTERNAL;

_______________________________________________
Mono-patches maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches

Reply via email to