Author: lupus
Date: 2007-10-15 04:23:45 -0400 (Mon, 15 Oct 2007)
New Revision: 87482
Modified:
trunk/mono/mono/mini/ChangeLog
trunk/mono/mono/mini/mini-x86.c
trunk/mono/mono/mini/mini-x86.h
Log:
Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <[EMAIL PROTECTED]>
* mini-x86.c, mini-x86.h: x86 support for the common vtable
trampoline.
Modified: trunk/mono/mono/mini/ChangeLog
===================================================================
--- trunk/mono/mono/mini/ChangeLog 2007-10-15 08:21:41 UTC (rev 87481)
+++ trunk/mono/mono/mini/ChangeLog 2007-10-15 08:23:45 UTC (rev 87482)
@@ -1,4 +1,9 @@
+Mon Oct 15 10:39:26 CEST 2007 Paolo Molaro <[EMAIL PROTECTED]>
+
+ * mini-x86.c, mini-x86.h: x86 support for the common vtable
+ trampoline.
+
Mon Oct 15 10:37:15 CEST 2007 Paolo Molaro <[EMAIL PROTECTED]>
* mini-trampolines.c: changed the magic rampoline to understand
Modified: trunk/mono/mono/mini/mini-x86.c
===================================================================
--- trunk/mono/mono/mini/mini-x86.c 2007-10-15 08:21:41 UTC (rev 87481)
+++ trunk/mono/mono/mini/mini-x86.c 2007-10-15 08:23:45 UTC (rev 87482)
@@ -4445,12 +4445,14 @@
}
}
-gpointer*
-mono_arch_get_vcall_slot_addr (guint8 *code, gpointer *regs)
+gpointer
+mono_arch_get_vcall_slot (guint8 *code, gpointer *regs, int *displacement)
{
guint8 reg = 0;
gint32 disp = 0;
+ *displacement = 0;
+
/* go to the start of the call instruction
*
* address_byte = (m << 6) | (o << 3) | reg
@@ -4504,9 +4506,21 @@
return NULL;
}
- return (gpointer*)(((gint32)(regs [reg])) + disp);
+ *displacement = disp;
+ return regs [reg];
}
+gpointer*
+mono_arch_get_vcall_slot_addr (guint8 *code, gpointer *regs)
+{
+ gpointer vt;
+ int displacement;
+ vt = mono_arch_get_vcall_slot (code, regs, &displacement);
+ if (!vt)
+ return NULL;
+ return (gpointer*)((char*)vt + displacement);
+}
+
gpointer
mono_arch_get_this_arg_from_call (MonoMethodSignature *sig, gssize *regs,
guint8 *code)
{
Modified: trunk/mono/mono/mini/mini-x86.h
===================================================================
--- trunk/mono/mono/mini/mini-x86.h 2007-10-15 08:21:41 UTC (rev 87481)
+++ trunk/mono/mono/mini/mini-x86.h 2007-10-15 08:23:45 UTC (rev 87482)
@@ -265,6 +265,7 @@
#define MONO_ARCH_HAVE_CREATE_VARS 1
#define MONO_ARCH_HAVE_IMT 1
#define MONO_ARCH_IMT_REG X86_EDX
+#define MONO_ARCH_COMMON_VTABLE_TRAMPOLINE 1
#define MONO_ARCH_AOT_SUPPORTED 1
_______________________________________________
Mono-patches maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-patches