X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mono%2Fmini%2Fgc-test.cs;h=023a56d716507bda15dc1dc604531d94b82090eb;hb=5d97d9b6c91b8000a356f7cafeeb9747db2b3c9f;hp=2ec1c0ab3ff0f314df1f949757c04c5032bfde37;hpb=6731dce33271390c2cc431a81b936afbc2541fa0;p=mono.git diff --git a/mono/mini/gc-test.cs b/mono/mini/gc-test.cs index 2ec1c0ab3ff..023a56d7165 100644 --- a/mono/mini/gc-test.cs +++ b/mono/mini/gc-test.cs @@ -542,15 +542,42 @@ class Tests { } [MethodImplAttribute (MethodImplOptions.NoInlining)] - public static void liveness_12_inner (int a, int b, int c, int d, int e, int f, object o) { + public static void liveness_12_inner (int a, int b, int c, int d, int e, int f, object o, ref string s) { GC.Collect (1); o.GetHashCode (); + s.GetHashCode (); + } + + class FooClass { + public string s; } // Liveness for param area public static int test_0_liveness_12 () { + var f = new FooClass () { s = "A" }; // The ref argument should be passed on the stack - liveness_12_inner (1, 2, 3, 4, 5, 6, new object ()); + liveness_12_inner (1, 2, 3, 4, 5, 6, new object (), ref f.s); + return 0; + } + + interface IFace { + int foo (); + } + + struct BarStruct : IFace { + int i; + + public int foo () { + GC.Collect (); + return i; + } + } + + public static int test_0_liveness_unbox_trampoline () { + var s = new BarStruct (); + + IFace iface = s; + iface.foo (); return 0; } @@ -583,4 +610,22 @@ class Tests { else return 1; } -} \ No newline at end of file + + struct LargeBitmap { + public object o1, o2, o3; + public int i; + public object o4, o5, o6, o7, o9, o10, o11, o12, o13, o14, o15, o16, o17, o18, o19, o20, o21, o22, o23, o24, o25, o26, o27, o28, o29, o30, o31, o32; + } + + public static int test_12_large_bitmap () { + LargeBitmap lb = new LargeBitmap (); + lb.o1 = 1; + lb.o2 = 2; + lb.o3 = 3; + lb.o32 = 6; + + GC.Collect (0); + + return (int)lb.o1 + (int)lb.o2 + (int)lb.o3 + (int)lb.o32; + } +}