public static void TestLocalsOneBlock() { var s1 = new ComplexStructWithExplicitLayout(); s1.ObjectField = new Reporter("s1.ObjectField", nameof(TestLocalsOneBlock)); s1.AnotherObjectField = new Reporter("s1.AnotherObjectField", nameof(TestLocalsOneBlock)); s1.StructWithRef.ObjectField = new Reporter("s1.StructWithRef.ObjectField", nameof(TestLocalsOneBlock)); var s2 = new SimpleStructWithExplicitLayout(); s2.ObjectField = new Reporter("s2.ObjectField", nameof(TestLocalsOneBlock)); var s3 = new SimpleStructWithAutoLayout(); s3.ObjectField = new Reporter("s3.ObjectField", nameof(TestLocalsOneBlock)); s3.AnotherObjectField = new Reporter("s3.AnotherObjectField", nameof(TestLocalsOneBlock)); var s4 = new SingleObjectStruct(); s4.ObjectField = new Reporter("s4.ObjectField", nameof(TestLocalsOneBlock)); var s5 = new StructWithoutObjectFields(); var s6src = new SingleObjectStruct(); s6src.ObjectField = new Reporter("s6src.ObjectField", nameof(TestLocalsOneBlock)); var s6 = new SingleObjectStruct?(s6src); GC.Collect(2, GCCollectionMode.Forced); GC.WaitForPendingFinalizers(); CheckSuccess(); GC.KeepAlive(s1); GC.KeepAlive(s2); GC.KeepAlive(s3); GC.KeepAlive(s4); GC.KeepAlive(s5); GC.KeepAlive(s6); }
public static void TestImplicitByrefsOneBlock() { var s1 = new ComplexStructWithExplicitLayout(); s1.ObjectField = new Reporter("s1.ObjectField", nameof(TestImplicitByrefsOneBlock)); s1.AnotherObjectField = new Reporter("s1.AnotherObjectField", nameof(TestImplicitByrefsOneBlock)); s1.StructWithRef.ObjectField = new Reporter("s1.StructWithRef.ObjectField", nameof(TestImplicitByrefsOneBlock)); var s2 = new SimpleStructWithExplicitLayout(); s2.ObjectField = new Reporter("s2.ObjectField", nameof(TestImplicitByrefsOneBlock)); var s3 = new SimpleStructWithAutoLayout(); s3.ObjectField = new Reporter("s3.ObjectField", nameof(TestImplicitByrefsOneBlock)); s3.AnotherObjectField = new Reporter("s3.AnotherObjectField", nameof(TestImplicitByrefsOneBlock)); var s4 = new SingleObjectStruct(); s4.ObjectField = new Reporter("s4.ObjectField", nameof(TestImplicitByrefsOneBlock)); var s5 = new StructWithoutObjectFields(); var s6src = new SingleObjectStruct(); s6src.ObjectField = new Reporter("s6src.ObjectField", nameof(TestImplicitByrefsOneBlock)); var s6 = new SingleObjectStruct?(s6src); TestImplicitByrefsOneBlockInner(s1, s2, s3, s4, s5, s6); }
public static void TestClassWrapperOneBlock() { var c1 = new Class <ComplexStructWithExplicitLayout>(); c1.Field.ObjectField = new Reporter("c1.Field.ObjectField", nameof(TestClassWrapperOneBlock)); c1.Field.AnotherObjectField = new Reporter("c1.Field.AnotherObjectField", nameof(TestClassWrapperOneBlock)); c1.Field.StructWithRef.ObjectField = new Reporter("c1.Field.StructWithRef.ObjectField", nameof(TestClassWrapperOneBlock)); var c2 = new Class <SimpleStructWithExplicitLayout>(); c2.Field = new SimpleStructWithExplicitLayout(); c2.Field.ObjectField = new Reporter("c2.Field.ObjectField", nameof(TestClassWrapperOneBlock)); var c3 = new Class <SimpleStructWithAutoLayout>(); c3.Field.ObjectField = new Reporter("c3.Field.ObjectField", nameof(TestClassWrapperOneBlock)); c3.Field.AnotherObjectField = new Reporter("c3.Field.AnotherObjectField", nameof(TestClassWrapperOneBlock)); var c4 = new Class <SingleObjectStruct>(); c4.Field.ObjectField = new Reporter("c4.Field.ObjectField", nameof(TestClassWrapperOneBlock)); var c5 = new Class <StructWithoutObjectFields>(); var c6 = new Class <SingleObjectStruct?>(); var s6src = new SingleObjectStruct(); s6src.ObjectField = new Reporter("s6src.ObjectField", nameof(TestClassWrapperOneBlock)); c6.Field = new SingleObjectStruct?(s6src); TestClassWrapperOneBlockInner(c1, c2, c3, c4, c5, c6); }
public static void TestImplicitByrefsOneBlockInner( ComplexStructWithExplicitLayout s1, SimpleStructWithExplicitLayout s2, SimpleStructWithAutoLayout s3, SingleObjectStruct s4, StructWithoutObjectFields s5, SingleObjectStruct?s6) { GC.Collect(2, GCCollectionMode.Forced); GC.WaitForPendingFinalizers(); CheckSuccess(); GC.KeepAlive(s1); GC.KeepAlive(s2); GC.KeepAlive(s3); GC.KeepAlive(s4); GC.KeepAlive(s5); GC.KeepAlive(s6); }