diff options
author | Bernhard Urban <bernhard.urban@xamarin.com> | 2017-02-27 19:55:53 +0300 |
---|---|---|
committer | Bernhard Urban <bernhard.urban@xamarin.com> | 2017-03-01 00:59:28 +0300 |
commit | 5b30a1580604af5640f9e431410d6f284008d66a (patch) | |
tree | 47e75e9ebf89e9174e9f5cd85d9efbc0139d8954 | |
parent | 550d7b00957b2e0695cc2b018237936e25db24ad (diff) |
[interpreter] allow generic inst type in icall trampoline
-rw-r--r-- | mono/mini/generics.cs | 3 | ||||
-rw-r--r-- | mono/mini/interpreter/interp.c | 2 |
2 files changed, 2 insertions, 3 deletions
diff --git a/mono/mini/generics.cs b/mono/mini/generics.cs index eae71e11f54..5b7618a9d50 100644 --- a/mono/mini/generics.cs +++ b/mono/mini/generics.cs @@ -462,7 +462,6 @@ class Tests } #endif - [Category ("!INTERPRETER")] public static int test_0_ldvirtftn_generic_method () { new GenericsTests ().ldvirtftn<string> (); @@ -489,7 +488,6 @@ class Tests // This cannot be made to work with full-aot, since there it is impossible to // statically determine that Foo<string>.Bar <int> is needed, the code only // references IFoo.Bar<int> - [Category ("!INTERPRETER")] [Category ("!FULLAOT")] public static int test_0_generic_virtual_on_interfaces () { Foo<string>.count1 = 0; @@ -515,7 +513,6 @@ class Tests return 0; } - [Category ("!INTERPRETER")] public static int test_0_generic_virtual_on_interfaces_ref () { Foo<string>.count1 = 0; Foo<string>.count2 = 0; diff --git a/mono/mini/interpreter/interp.c b/mono/mini/interpreter/interp.c index eee3a042a37..8bc422c7e0e 100644 --- a/mono/mini/interpreter/interp.c +++ b/mono/mini/interpreter/interp.c @@ -761,6 +761,7 @@ static MethodArguments* build_args_from_sig (MonoMethodSignature *sig, MonoInvoc case MONO_TYPE_STRING: case MONO_TYPE_I8: case MONO_TYPE_VALUETYPE: + case MONO_TYPE_GENERICINST: margs->ilen++; break; default: @@ -805,6 +806,7 @@ static MethodArguments* build_args_from_sig (MonoMethodSignature *sig, MonoInvoc case MONO_TYPE_STRING: case MONO_TYPE_I8: case MONO_TYPE_VALUETYPE: + case MONO_TYPE_GENERICINST: margs->iargs [int_i] = frame->stack_args [i].data.p; #if DEBUG_INTERP g_print ("build_args_from_sig: margs->iargs[%d]: %p (frame @ %d)\n", int_i, margs->iargs[int_i], i); |