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