From 2b245c111cd3d1c758f3a253df8fc1d3cda65f33 Mon Sep 17 00:00:00 2001 From: Zoltan Varga Date: Sat, 17 Nov 2007 16:58:45 +0000 Subject: [PATCH] 2007-11-17 Zoltan Varga * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in mini.c. svn path=/trunk/mono/; revision=89862 --- mono/mini/ChangeLog | 3 +++ mono/mini/mini-ia64.c | 30 +++++------------------------- mono/mini/mini-ia64.h | 1 + 3 files changed, 9 insertions(+), 25 deletions(-) diff --git a/mono/mini/ChangeLog b/mono/mini/ChangeLog index d4829c7c9cb..9ebc8994760 100644 --- a/mono/mini/ChangeLog +++ b/mono/mini/ChangeLog @@ -1,5 +1,8 @@ 2007-11-17 Zoltan Varga + * mini-ia64.c (mono_arch_get_inst_for_method): Remove code which is now in + mini.c. + * mini-amd64.c (mono_arch_compute_omit_fp): Disable fp elimination for methods returning a vtype in a register. diff --git a/mono/mini/mini-ia64.c b/mono/mini/mini-ia64.c index 57c763a28d8..32b7dd32173 100644 --- a/mono/mini/mini-ia64.c +++ b/mono/mini/mini-ia64.c @@ -4727,13 +4727,13 @@ mono_arch_get_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethod { MonoInst *ins = NULL; - if (cmethod->klass == mono_defaults.thread_class && - strcmp (cmethod->name, "MemoryBarrier") == 0) { - MONO_INST_NEW (cfg, ins, OP_MEMORY_BARRIER); - } else if(cmethod->klass->image == mono_defaults.corlib && + if(cmethod->klass->image == mono_defaults.corlib && (strcmp (cmethod->klass->name_space, "System.Threading") == 0) && (strcmp (cmethod->klass->name, "Interlocked") == 0)) { - + /* + * We don't use the generic version in mini_get_inst_for_method () since the + * ia64 has atomic_add_imm opcodes. + */ if (strcmp (cmethod->name, "Increment") == 0) { guint32 opcode; @@ -4758,22 +4758,6 @@ mono_arch_get_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethod MONO_INST_NEW (cfg, ins, opcode); ins->inst_imm = -1; ins->inst_i0 = args [0]; - } else if (strcmp (cmethod->name, "Exchange") == 0) { - guint32 opcode; - - if (fsig->params [0]->type == MONO_TYPE_I4) - opcode = OP_ATOMIC_EXCHANGE_I4; - else if ((fsig->params [0]->type == MONO_TYPE_I8) || - (fsig->params [0]->type == MONO_TYPE_I) || - (fsig->params [0]->type == MONO_TYPE_OBJECT)) - opcode = OP_ATOMIC_EXCHANGE_I8; - else - return NULL; - - MONO_INST_NEW (cfg, ins, opcode); - - ins->inst_i0 = args [0]; - ins->inst_i1 = args [1]; } else if (strcmp (cmethod->name, "Add") == 0) { guint32 opcode; @@ -4788,10 +4772,6 @@ mono_arch_get_inst_for_method (MonoCompile *cfg, MonoMethod *cmethod, MonoMethod ins->inst_i0 = args [0]; ins->inst_i1 = args [1]; - } else if (strcmp (cmethod->name, "Read") == 0 && (fsig->params [0]->type == MONO_TYPE_I8)) { - /* 64 bit reads are already atomic */ - MONO_INST_NEW (cfg, ins, CEE_LDIND_I8); - ins->inst_i0 = args [0]; } } diff --git a/mono/mini/mini-ia64.h b/mono/mini/mini-ia64.h index 6bcdd4c419f..b54ab2cb594 100644 --- a/mono/mini/mini-ia64.h +++ b/mono/mini/mini-ia64.h @@ -183,6 +183,7 @@ unw_dyn_region_info_t* mono_ia64_create_unwind_region (Ia64CodegenState *code); #define MONO_ARCH_HAVE_CREATE_SPECIFIC_TRAMPOLINE 1 #define MONO_ARCH_HAVE_SAVE_UNWIND_INFO 1 #define MONO_ARCH_HAVE_CREATE_VARS 1 +#define MONO_ARCH_HAVE_ATOMIC_EXCHANGE 1 #define MONO_ARCH_HAVE_IMT 1 #define MONO_ARCH_COMMON_VTABLE_TRAMPOLINE 1 -- 2.25.1