2008-11-05 Zoltan Varga <vargaz@gmail.com>
authorZoltan Varga <vargaz@gmail.com>
Wed, 5 Nov 2008 19:41:24 +0000 (19:41 -0000)
committerZoltan Varga <vargaz@gmail.com>
Wed, 5 Nov 2008 19:41:24 +0000 (19:41 -0000)
* tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
enter/exit trampoline creation functions.

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

mono/mini/ChangeLog
mono/mini/tramp-amd64.c
mono/mini/tramp-x86.c

index 887e31c29c855db0410793a4b753125e230f2794..c7a266af0d599b0742d4ac71aa48ee34556f89ef 100644 (file)
@@ -1,5 +1,8 @@
 2008-11-05  Zoltan Varga  <vargaz@gmail.com>
 
+       * tramp-x86.c tramp_amd64.c: Add AOT compatible variants of the monitor
+       enter/exit trampoline creation functions.
+
        * Makefile.am: Fix the generation of buildver.h so it is not invoked during
        make dist.
 
index d6196d6229217a8b2e41dd70f56fcf08b5ed0ba8..949f526bab4aefa671d97b54e621a035d65bff7f 100644 (file)
@@ -682,8 +682,18 @@ mono_arch_create_generic_class_init_trampoline (void)
 }
 
 #ifdef MONO_ARCH_MONITOR_OBJECT_REG
+
 gpointer
 mono_arch_create_monitor_enter_trampoline (void)
+{
+       guint32 code_size;
+       MonoJumpInfo *ji;
+
+       return mono_arch_create_monitor_enter_trampoline_full (&code_size, &ji, FALSE);
+}
+
+gpointer
+mono_arch_create_monitor_enter_trampoline_full (guint32 *code_size, MonoJumpInfo **ji, gboolean aot)
 {
        guint8 *tramp = mono_arch_create_specific_trampoline (NULL, MONO_TRAMPOLINE_MONITOR_ENTER, mono_get_root_domain (), NULL);
        guint8 *code, *buf;
@@ -691,6 +701,8 @@ mono_arch_create_monitor_enter_trampoline (void)
        int tramp_size;
        int owner_offset, nest_offset, dummy;
 
+       g_assert (!aot);
+
        g_assert (MONO_ARCH_MONITOR_OBJECT_REG == AMD64_RDI);
 
        mono_monitor_threads_sync_members_offset (&owner_offset, &nest_offset, &dummy);
@@ -774,6 +786,15 @@ mono_arch_create_monitor_enter_trampoline (void)
 
 gpointer
 mono_arch_create_monitor_exit_trampoline (void)
+{
+       guint32 code_size;
+       MonoJumpInfo *ji;
+
+       return mono_arch_create_monitor_exit_trampoline_full (&code_size, &ji, FALSE);
+}
+
+gpointer
+mono_arch_create_monitor_exit_trampoline_full (guint32 *code_size, MonoJumpInfo **ji, gboolean aot)
 {
        guint8 *tramp = mono_arch_create_specific_trampoline (NULL, MONO_TRAMPOLINE_MONITOR_EXIT, mono_get_root_domain (), NULL);
        guint8 *code, *buf;
@@ -782,6 +803,8 @@ mono_arch_create_monitor_exit_trampoline (void)
        int tramp_size;
        int owner_offset, nest_offset, entry_count_offset;
 
+       g_assert (!aot);
+
        g_assert (MONO_ARCH_MONITOR_OBJECT_REG == AMD64_RDI);
 
        mono_monitor_threads_sync_members_offset (&owner_offset, &nest_offset, &entry_count_offset);
index 284afdf907daaeb35be63a163f71180fb42bdca5..25c21da6c7d23bbeccb563bfdc35fdeb26a50a02 100644 (file)
@@ -556,6 +556,15 @@ mono_arch_create_generic_class_init_trampoline (void)
  */
 gpointer
 mono_arch_create_monitor_enter_trampoline (void)
+{
+       guint32 code_size;
+       MonoJumpInfo *ji;
+
+       return mono_arch_create_monitor_enter_trampoline_full (&code_size, &ji, FALSE);
+}
+
+gpointer
+mono_arch_create_monitor_enter_trampoline_full (guint32 *code_size, MonoJumpInfo **ji, gboolean aot)
 {
        guint8 *tramp = mono_get_trampoline_code (MONO_TRAMPOLINE_MONITOR_ENTER);
        guint8 *code, *buf;
@@ -651,6 +660,15 @@ mono_arch_create_monitor_enter_trampoline (void)
 
 gpointer
 mono_arch_create_monitor_exit_trampoline (void)
+{
+       guint32 code_size;
+       MonoJumpInfo *ji;
+
+       return mono_arch_create_monitor_exit_trampoline_full (&code_size, &ji, FALSE);
+}
+
+gpointer
+mono_arch_create_monitor_exit_trampoline_full (guint32 *code_size, MonoJumpInfo **ji, gboolean aot)
 {
        guint8 *tramp = mono_get_trampoline_code (MONO_TRAMPOLINE_MONITOR_EXIT);
        guint8 *code, *buf;