X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Finterpreter%2Ftransform.c;h=b47e594ef4959764748f33a6cc370aaaae7b55a9;hb=901938bfd86f113671d2ccce533562e1225e246f;hp=e89fe1bc7fc7ae9dd795b6550e73e68be42f8873;hpb=38b958604c95e9cadc79e2769a202991f0becf13;p=mono.git diff --git a/mono/interpreter/transform.c b/mono/interpreter/transform.c index e89fe1bc7fc..b47e594ef49 100644 --- a/mono/interpreter/transform.c +++ b/mono/interpreter/transform.c @@ -436,7 +436,7 @@ load_arg(TransformData *td, int n) { int mt; MonoClass *klass = NULL; - if (n == 0 && td->method->signature->hasthis) { + if (n == 0 && mono_method_signature (td->method)->hasthis) { if (td->method->klass->valuetype) mt = MINT_TYPE_P; else { @@ -446,12 +446,12 @@ load_arg(TransformData *td, int n) ADD_CODE(td, MINT_LDTHIS); } else { MonoType *type; - n -= td->method->signature->hasthis; - type = td->method->signature->params [n]; + n -= mono_method_signature (td->method)->hasthis; + type = mono_method_signature (td->method)->params [n]; mt = mint_type (type); if (mt == MINT_TYPE_VT) { gint32 size; - if (td->method->signature->pinvoke) + if (mono_method_signature (td->method)->pinvoke) size = mono_class_native_size (type->data.klass, NULL); else size = mono_class_value_size (type->data.klass, NULL); @@ -475,16 +475,16 @@ store_arg(TransformData *td, int n) { int mt; CHECK_STACK (td, 1); - if (n == 0 && td->method->signature->hasthis) + if (n == 0 && mono_method_signature (td->method)->hasthis) ADD_CODE(td, MINT_STTHIS); else { MonoType *type; - n -= td->method->signature->hasthis; - type = td->method->signature->params [n]; + n -= mono_method_signature (td->method)->hasthis; + type = mono_method_signature (td->method)->params [n]; mt = mint_type (type); if (mt == MINT_TYPE_VT) { gint32 size; - if (td->method->signature->pinvoke) + if (mono_method_signature (td->method)->pinvoke) size = mono_class_native_size (type->data.klass, NULL); else size = mono_class_value_size (type->data.klass, NULL); @@ -504,11 +504,11 @@ store_arg(TransformData *td, int n) static void store_inarg(TransformData *td, int n) { - MonoType *type = td->method->signature->params [n]; + MonoType *type = mono_method_signature (td->method)->params [n]; int mt = mint_type (type); if (mt == MINT_TYPE_VT) { gint32 size; - if (td->method->signature->pinvoke) + if (mono_method_signature (td->method)->pinvoke) size = mono_class_native_size (type->data.klass, NULL); else size = mono_class_value_size (type->data.klass, NULL); @@ -612,7 +612,7 @@ static void generate(MonoMethod *method, RuntimeMethod *rtm, unsigned char *is_bb_start) { MonoMethodHeader *header = mono_method_get_header (method); - MonoMethodSignature *signature = method->signature; + MonoMethodSignature *signature = mono_method_signature (method); MonoImage *image = method->klass->image; MonoDomain *domain = mono_domain_get (); MonoGenericContext *generic_context = NULL; @@ -629,7 +629,7 @@ generate(MonoMethod *method, RuntimeMethod *rtm, unsigned char *is_bb_start) TransformData td; int generating_code = 1; - if (method->signature->is_inflated) + if (mono_method_signature (method)->is_inflated) generic_context = ((MonoMethodInflated *) method)->context; memset(&td, 0, sizeof(td)); @@ -971,7 +971,7 @@ generate(MonoMethod *method, RuntimeMethod *rtm, unsigned char *is_bb_start) m = mono_get_method_full (image, token, NULL, generic_context); else m = (MonoMethod *)mono_method_get_wrapper_data (method, token); - csignature = m->signature; + csignature = mono_method_signature (m); if (m->klass == mono_defaults.string_class) { if (m->name [0] == 'g') { if (strcmp (m->name, "get_Chars") == 0) @@ -1718,7 +1718,7 @@ generate(MonoMethod *method, RuntimeMethod *rtm, unsigned char *is_bb_start) else m = mono_get_method_full (image, token, NULL, generic_context); - csignature = m->signature; + csignature = mono_method_signature (m); klass = m->klass; td.sp -= csignature->param_count; ADD_CODE(&td, MINT_NEWOBJ); @@ -2461,6 +2461,7 @@ generate(MonoMethod *method, RuntimeMethod *rtm, unsigned char *is_bb_start) break; } case CEE_MONO_LDPTR: + case CEE_MONO_CLASSCONST: token = read32 (td.ip + 1); td.ip += 5; ADD_CODE(&td, MINT_MONO_LDPTR); @@ -2505,6 +2506,7 @@ generate(MonoMethod *method, RuntimeMethod *rtm, unsigned char *is_bb_start) break; case CEE_MONO_SAVE_LMF: case CEE_MONO_RESTORE_LMF: + case CEE_MONO_NOT_TAKEN: ++td.ip; break; default: @@ -2804,7 +2806,7 @@ mono_interp_transform_method (RuntimeMethod *runtime_method, ThreadContext *cont MonoMethod *method = runtime_method->method; MonoImage *image = method->klass->image; MonoMethodHeader *header = mono_method_get_header (method); - MonoMethodSignature *signature = method->signature; + MonoMethodSignature *signature = mono_method_signature (method); register const unsigned char *ip, *end; const MonoOpcode *opcode; MonoMethod *m; @@ -2838,7 +2840,7 @@ mono_interp_transform_method (RuntimeMethod *runtime_method, ThreadContext *cont mono_profiler_method_jit (method); /* sort of... */ - if (method->signature->is_inflated) + if (mono_method_signature (method)->is_inflated) generic_context = ((MonoMethodInflated *) method)->context; if (method->iflags & (METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL | METHOD_IMPL_ATTRIBUTE_RUNTIME)) { @@ -2852,12 +2854,12 @@ mono_interp_transform_method (RuntimeMethod *runtime_method, ThreadContext *cont /* assumes all internal calls with an array this are built in... */ if (method->iflags & METHOD_IMPL_ATTRIBUTE_INTERNAL_CALL && - (!method->signature->hasthis || method->klass->rank == 0)) { + (! mono_method_signature (method)->hasthis || method->klass->rank == 0)) { runtime_method->code = g_malloc(sizeof(short)); runtime_method->code[0] = MINT_CALLINT; if (((MonoMethodPInvoke*) method)->addr == NULL) ((MonoMethodPInvoke*) method)->addr = mono_lookup_internal_call (method); - runtime_method->func = mono_arch_create_trampoline (method->signature, method->string_ctor); + runtime_method->func = mono_arch_create_trampoline (mono_method_signature (method), method->string_ctor); } else { const char *name = method->name; if (method->klass->parent == mono_defaults.multicastdelegate_class) {