Exemple #1
0
    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);
    }
Exemple #2
0
    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);
    }
Exemple #3
0
    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);
    }