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.
}
#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;
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);
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;
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);
*/
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;
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;