Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
authorPaolo Molaro <lupus@oddwiz.org>
Wed, 11 Jul 2007 10:34:21 +0000 (10:34 -0000)
committerPaolo Molaro <lupus@oddwiz.org>
Wed, 11 Jul 2007 10:34:21 +0000 (10:34 -0000)
* mini-trampolines.c: implement AOT IMT support.
* mini-x86.h: enable IMT support for wider testing.

svn path=/trunk/mono/; revision=81778

mono/mini/ChangeLog
mono/mini/mini-trampolines.c
mono/mini/mini-x86.h

index 588417ce1d48637ec6b20ee5d1e0ab53781d9aef..8c2c221faff70a5333cd9348100b47d509a78a5b 100644 (file)
@@ -1,3 +1,9 @@
+
+Wed Jul 11 12:41:32 CEST 2007 Paolo Molaro <lupus@ximian.com>
+
+       * mini-trampolines.c: implement AOT IMT support.
+       * mini-x86.h: enable IMT support for wider testing.
+
 2007-07-10  Zoltan Varga  <vargaz@gmail.com>
 
        * inssel.brg (emit_imt_argument): Add aot support here.
index f0f1ebdaee44782851e239bc37d6b89b4eabf621..8626d0c853c70de824073351a6747a8e8783d14a 100644 (file)
@@ -173,8 +173,14 @@ mono_aot_trampoline (gssize *regs, guint8 *code, guint8 *token_info,
         * is AppDomain:InvokeInDomain, so this is the same check as in 
         * mono_method_same_domain () but without loading the metadata for the method.
         */
-       if ((is_got_entry && (mono_domain_get () == mono_get_root_domain ())) || mono_domain_owns_vtable_slot (mono_domain_get (), vtable_slot))
+       if ((is_got_entry && (mono_domain_get () == mono_get_root_domain ())) || mono_domain_owns_vtable_slot (mono_domain_get (), vtable_slot)) {
+#ifdef MONO_ARCH_HAVE_IMT
+               if (!method)
+                       method = mono_get_method (image, token, NULL);
+               vtable_slot = mono_convert_imt_slot_to_vtable_slot (vtable_slot, (gpointer*)regs, method);
+#endif
                *vtable_slot = addr;
+       }
 
        return addr;
 }
index 21ec21600c1c20deb1a3458e948d8c6bec2e1690..5ee62f0c1a88b029baa57e62aa776072998ca5ac 100644 (file)
@@ -252,7 +252,7 @@ typedef struct {
 #define MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE 1
 #define MONO_ARCH_HAVE_CREATE_DELEGATE_TRAMPOLINE 1
 #define MONO_ARCH_HAVE_CREATE_VARS 1
-/*#define MONO_ARCH_HAVE_IMT 1*/
+#define MONO_ARCH_HAVE_IMT 1
 #define MONO_ARCH_IMT_REG X86_EDX
 
 #endif /* __MONO_MINI_X86_H__ */