[sre] Expect a new token for MonoArrayMethod and SignatureHelper
authorAleksey Kliger <aleksey@xamarin.com>
Wed, 27 Sep 2017 22:30:13 +0000 (18:30 -0400)
committerMarek Safar <marek.safar@gmail.com>
Fri, 29 Sep 2017 09:01:31 +0000 (11:01 +0200)
mono/metadata/sre.c

index b899c830e7898d960ad8418a4afb49c70ef2b882..29632463e1cc56df34012bab698632efa57ce917 100644 (file)
@@ -1197,16 +1197,20 @@ mono_image_create_token (MonoDynamicImage *assembly, MonoObjectHandle obj,
                /*g_print ("got token 0x%08x for %s\n", token, f->field->name);*/
        } else if (strcmp (klass->name, "MonoArrayMethod") == 0) {
                MonoReflectionArrayMethodHandle m = MONO_HANDLE_CAST (MonoReflectionArrayMethod, obj);
+               /* always returns a fresh token */
                guint32 array_token = mono_image_get_array_token (assembly, m, error);
                if (!is_ok (error))
                        goto leave;
                token = array_token;
+               how_collide = MONO_DYN_IMAGE_TOK_NEW;
        } else if (strcmp (klass->name, "SignatureHelper") == 0) {
                MonoReflectionSigHelperHandle s = MONO_HANDLE_CAST (MonoReflectionSigHelper, obj);
+               /* always returns a fresh token */
                guint32 sig_token = MONO_TOKEN_SIGNATURE | mono_image_get_sighelper_token (assembly, s, error);
                if (!is_ok (error))
                        goto leave;
                token = sig_token;
+               how_collide = MONO_DYN_IMAGE_TOK_NEW;
        } else {
                g_error ("requested token for %s\n", klass->name);
        }