X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Faot-tests.cs;h=82fb3ae674dfe4030e7ff8b9fe35be8cb2c56d12;hb=52e98abd6e5c6d10ddea91a529f7b1b2336e0696;hp=f30bf1f83afc2d2572051a3d8d09ded5d7c5d5c4;hpb=830f44066cd5e450b6c8ab0a2c31d71c877d78a3;p=mono.git diff --git a/mono/mini/aot-tests.cs b/mono/mini/aot-tests.cs index f30bf1f83af..82fb3ae674d 100644 --- a/mono/mini/aot-tests.cs +++ b/mono/mini/aot-tests.cs @@ -4,6 +4,7 @@ using System.Linq; using System.Reflection; using System.Runtime.InteropServices; using System.Runtime.CompilerServices; +using System.Collections; using System.Collections.Generic; using System.Collections.ObjectModel; @@ -25,6 +26,7 @@ class Tests public delegate void ArrayDelegate (int[,] arr); + [Category ("!WASM")] //Requires a working threadpool static int test_0_array_delegate_full_aot () { ArrayDelegate d = delegate (int[,] arr) { }; @@ -84,6 +86,7 @@ class Tests } [Category ("DYNCALL")] + [Category ("!FULLAOT-AMD64")] static int test_0_arm64_dyncall_hfa_double () { double arg1 = 1.0f; // HFA with double members @@ -97,6 +100,7 @@ class Tests } [Category ("DYNCALL")] + [Category ("!FULLAOT-AMD64")] static int test_0_arm64_dyncall_hfa_float () { double arg1 = 1.0f; var s = new Struct2 (); @@ -110,6 +114,7 @@ class Tests [Category ("DYNCALL")] [Category ("GSHAREDVT")] + [Category ("!FULLAOT-AMD64")] static int test_0_arm64_dyncall_gsharedvt_out_hfa_double () { /* gsharedvt out trampoline with double hfa argument */ double arg1 = 1.0f; @@ -129,6 +134,7 @@ class Tests [Category ("DYNCALL")] [Category ("GSHAREDVT")] + [Category ("!FULLAOT-AMD64")] static int test_0_arm64_dyncall_gsharedvt_out_hfa_float () { /* gsharedvt out trampoline with double hfa argument */ double arg1 = 1.0f; @@ -190,6 +196,8 @@ class Tests } [Category ("DYNCALL")] + [Category ("GSHAREDVT")] + [Category ("!FULLAOT-AMD64")] static int test_0_arm64_dyncall_vtypebyref_ret () { var s = new VTypeByRefStruct () { o1 = 1, o2 = 2, o3 = 3 }; Type t = typeof (Foo5<>).MakeGenericType (new Type [] { typeof (VTypeByRefStruct) }); @@ -210,7 +218,8 @@ class Tests } } - [Category("DYNCALL")] + [Category ("DYNCALL")] + [Category ("GSHAREDVT")] static int test_0_arm_dyncall_reg_stack_split () { var m = typeof (Foo6).GetMethod ("reg_stack_split_inner").MakeGenericMethod (new Type[] { typeof (long) }); var o = new Foo6 (); @@ -251,6 +260,8 @@ class Tests } [Category ("DYNCALL")] + [Category ("!FULLAOT-AMD64")] + [Category ("!INTERPRETER")] //known bug in the interpreter public static int test_0_dyncall_nullable () { int? v; @@ -367,6 +378,7 @@ class Tests return 0; } + [Category ("DYNCALL")] public static int test_0_array_accessor_runtime_invoke_ref () { var t = typeof (string[]); var arr = Array.CreateInstance (typeof (string), 1); @@ -399,6 +411,8 @@ class Tests } [Category ("DYNCALL")] + [Category ("!FULLAOT-AMD64")] + [Category ("!INTERPRETER")] //known bug in the interpreter public static int test_0_large_nullable_invoke () { var s = new LargeStruct () { a = 1, b = 2, c = 3, d = 4 }; @@ -453,4 +467,38 @@ class Tests #endif return m == m2 ? 0 : 1; } + + class GetCurrentMethodClass { + [MethodImplAttribute (MethodImplOptions.NoInlining)] + public MethodBase get_current () { + return MethodBase.GetCurrentMethod (); + } + } + + public static int test_0_get_current_method_generic () { + var c = new GetCurrentMethodClass (); + var m = c.get_current (); + var m2 = typeof (GetCurrentMethodClass<>).GetMethod ("get_current"); + return m == m2 ? 0 : 1; + } + + public static int test_0_array_wrappers_runtime_invoke () { + string[][] arr = new string [10][]; + IEnumerable iface = arr; + var m = typeof(IEnumerable).GetMethod ("GetEnumerator"); + m.Invoke (arr, null); + return 0; + } + + public static int test_0_fault_clauses () { + object [] data = { 1, 2, 3 }; + int [] expected = { 1, 2, 3 }; + + try { + Action d = delegate () { data.Cast ().GetEnumerator ().MoveNext (); }; + d (); + } catch (Exception ex) { + } + return 0; + } }