Exemplo n.º 1
0
    private static int Inline_NoGCTransition(int expected)
    {
        Console.WriteLine($"{nameof(Inline_NoGCTransition)} ({expected}) ...");
        int n;

        SuppressGCTransitionNative.NextUInt_Inline_NoGCTransition(&n);
        Assert.AreEqual(expected, n);
        return(n + 1);
    }
Exemplo n.º 2
0
    private static int Inline_NoGCTransition(int expected)
    {
        Console.WriteLine($"{nameof(Inline_NoGCTransition)} ({expected}) ...");
        int n;
        int ret = SuppressGCTransitionNative.NextUInt_Inline_NoGCTransition(&n);

        Assert.Equal(expected, n);
        CheckGCMode.Validate(transitionSuppressed: true, ret);
        return(n + 1);
    }
Exemplo n.º 3
0
    private static int Mixed_TightLoop(int expected)
    {
        Console.WriteLine($"{nameof(Mixed_TightLoop)} ({expected}) ...");
        int n     = 0;
        int count = 0x100;

        for (int i = 0; i < count; ++i)
        {
            SuppressGCTransitionNative.NextUInt_Inline_NoGCTransition(&n);
        }

        // Use the non-optimized version at the end so a GC poll is not
        // inserted here as well.
        SuppressGCTransitionNative.NextUInt_NoInline_GCTransition(&n);
        Assert.AreEqual(expected + count, n);
        return(n + 1);
    }
Exemplo n.º 4
0
    private static int Mixed(int expected)
    {
        Console.WriteLine($"{nameof(Mixed)} ({expected}) ...");
        int n;

        {
            bool ret = SuppressGCTransitionNative.NextUInt_NoInline_GCTransition(&n);
            Assert.AreEqual(expected++, n);
            ValidateMode(transitionSuppressed: false, ret);
            ret = SuppressGCTransitionNative.NextUInt_NoInline_NoGCTransition(&n);
            Assert.AreEqual(expected++, n);
            ValidateMode(transitionSuppressed: true, ret);
        }
        {
            int ret = SuppressGCTransitionNative.NextUInt_Inline_GCTransition(&n);
            Assert.AreEqual(expected++, n);
            ValidateMode(transitionSuppressed: false, ret);
            ret = SuppressGCTransitionNative.NextUInt_Inline_NoGCTransition(&n);
            Assert.AreEqual(expected++, n);
            ValidateMode(transitionSuppressed: true, ret);
        }
        return(n + 1);
    }