Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
123 changes: 76 additions & 47 deletions src/tests/JIT/interpreter/Interpreter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -723,13 +723,6 @@ static void EnsureCallingConventionTestTargetMethodsAreJitted()

static int Main(string[] args)
{
// WASM-TODO this is just hello world for now
if (RuntimeInformation.ProcessArchitecture == Architecture.Wasm)
{
Console.WriteLine("WASM-TODO: Interpreter tests");
return 100;
}

jitField1 = 42;
jitField2 = 43;

Expand Down Expand Up @@ -950,9 +943,13 @@ public static void RunInterpreterTests()
if (!TestCalli())
Environment.FailFast(null);

Console.WriteLine("TestStaticVirtualGeneric_CodePointerCase");
if (!TestStaticVirtualGeneric_CodePointerCase())
Environment.FailFast(null);
// active issue https://github.com/dotnet/runtime/issues/120319
if (RuntimeInformation.ProcessArchitecture != Architecture.Wasm)
{
Console.WriteLine("TestStaticVirtualGeneric_CodePointerCase");
if (!TestStaticVirtualGeneric_CodePointerCase())
Environment.FailFast(null);
}

Console.WriteLine("TestPreciseInitCctors");
if (!TestPreciseInitCctors())
Expand All @@ -972,7 +969,11 @@ public static void RunInterpreterTests()

Console.WriteLine("Empty string length: {0}", string.Empty.Length);

Console.WriteLine("BitConverter.IsLittleEndian: {0}", BitConverter.IsLittleEndian);
// active issue https://github.com/dotnet/runtime/issues/120319
if (RuntimeInformation.ProcessArchitecture != Architecture.Wasm)
{
Console.WriteLine("BitConverter.IsLittleEndian: {0}", BitConverter.IsLittleEndian);
}

Console.WriteLine("IntPtr.Zero: {0}, UIntPtr.Zero: {1}", IntPtr.Zero, UIntPtr.Zero);

Expand Down Expand Up @@ -1963,21 +1964,29 @@ public static bool TestVirtual()
retType = bc.GenericVirtualMethod<int>(out isBase);
if (retType != typeof(int) || isBase)
return false;
Console.WriteLine("bc.GenericVirtualMethod<string>");
retType = bc.GenericVirtualMethod<string>(out isBase);
if (retType != typeof(string) || isBase)
return false;
// active issue https://github.com/dotnet/runtime/issues/120319
if (RuntimeInformation.ProcessArchitecture != Architecture.Wasm)
{
Console.WriteLine("bc.GenericVirtualMethod<string>");
retType = bc.GenericVirtualMethod<string>(out isBase);
if (retType != typeof(string) || isBase)
return false;
}
Console.WriteLine("itest.VirtualMethod");
if (itest.VirtualMethod() != 0xdede)
return false;
Console.WriteLine("itest.GenericVirtualMethod<int>");
retType = itest.GenericVirtualMethod<int>(out isBase);
if (retType != typeof(int) || isBase)
return false;
Console.WriteLine("itest.GenericVirtualMethod<string>");
retType = itest.GenericVirtualMethod<string>(out isBase);
if (retType != typeof(string) || isBase)
return false;
// active issue https://github.com/dotnet/runtime/issues/120319
if (RuntimeInformation.ProcessArchitecture != Architecture.Wasm)
{
Console.WriteLine("itest.GenericVirtualMethod<string>");
retType = itest.GenericVirtualMethod<string>(out isBase);
if (retType != typeof(string) || isBase)
return false;
}

bc = new BaseClass();
itest = bc;
Expand All @@ -1991,21 +2000,29 @@ public static bool TestVirtual()
retType = bc.GenericVirtualMethod<int>(out isBase);
if (retType != typeof(int) || !isBase)
return false;
Console.WriteLine("bc.GenericVirtualMethod<string>");
retType = bc.GenericVirtualMethod<string>(out isBase);
if (retType != typeof(string) || !isBase)
return false;
// active issue https://github.com/dotnet/runtime/issues/120319
if (RuntimeInformation.ProcessArchitecture != Architecture.Wasm)
{
Console.WriteLine("bc.GenericVirtualMethod<string>");
retType = bc.GenericVirtualMethod<string>(out isBase);
if (retType != typeof(string) || !isBase)
return false;
}
Console.WriteLine("itest.VirtualMethod");
if (itest.VirtualMethod() != 0xbebe)
return false;
Console.WriteLine("itest.GenericVirtualMethod<int>");
retType = itest.GenericVirtualMethod<int>(out isBase);
if (retType != typeof(int) || !isBase)
return false;
Console.WriteLine("itest.GenericVirtualMethod<string>");
retType = itest.GenericVirtualMethod<string>(out isBase);
if (retType != typeof(string) || !isBase)
return false;
// active issue https://github.com/dotnet/runtime/issues/120319
if (RuntimeInformation.ProcessArchitecture != Architecture.Wasm)
{
Console.WriteLine("itest.GenericVirtualMethod<string>");
retType = itest.GenericVirtualMethod<string>(out isBase);
if (retType != typeof(string) || !isBase)
return false;
}
return true;
}

Expand Down Expand Up @@ -2500,12 +2517,16 @@ public static bool TestArray()
if (!ArrayUInt32(32, uint.MinValue)) return false;
if (!ArrayUInt32(32, uint.MaxValue)) return false;

// // long
if (!ArrayInt64(0, 0)) return false;
if (!ArrayInt64(1, 1)) return false;
if (!ArrayInt64(32, 32)) return false;
if (!ArrayInt64(32, Int64.MinValue)) return false;
if (!ArrayInt64(32, Int64.MaxValue)) return false;
// active issue https://github.com/dotnet/runtime/issues/120659
if (RuntimeInformation.ProcessArchitecture != Architecture.Wasm)
{
// // long
if (!ArrayInt64(0, 0)) return false;
if (!ArrayInt64(1, 1)) return false;
if (!ArrayInt64(32, 32)) return false;
if (!ArrayInt64(32, Int64.MinValue)) return false;
if (!ArrayInt64(32, Int64.MaxValue)) return false;
}

// float
if (!ArrayFloat(0, 0)) return false;
Expand All @@ -2514,10 +2535,14 @@ public static bool TestArray()
if (!ArrayFloat(32, float.MinValue)) return false;
if (!ArrayFloat(32, float.MaxValue)) return false;

// double
if (!ArrayDouble(0, 0)) return false;
if (!ArrayDouble(1, 1)) return false;
if (!ArrayDouble(32, 32)) return false;
// active issue https://github.com/dotnet/runtime/issues/120659
if (RuntimeInformation.ProcessArchitecture != Architecture.Wasm)
{
// double
if (!ArrayDouble(0, 0)) return false;
if (!ArrayDouble(1, 1)) return false;
if (!ArrayDouble(32, 32)) return false;
}

// ref and value types
if (!TestObjectArray()) return false;
Expand Down Expand Up @@ -2941,18 +2966,22 @@ public unsafe static bool TestCalli()
}


GetCalliGeneric<object>()();
if (_typeFromFill != typeof(object))
// active issue https://github.com/dotnet/runtime/issues/120319
if (RuntimeInformation.ProcessArchitecture != Architecture.Wasm)
{
Console.WriteLine("Calli generic test failed: expected object, got " + _typeFromFill);
return false;
}
GetCalliGeneric<object>()();
if (_typeFromFill != typeof(object))
{
Console.WriteLine("Calli generic test failed: expected object, got " + _typeFromFill);
return false;
}

GetCalliGeneric<string>()();
if (_typeFromFill != typeof(string))
{
Console.WriteLine("Calli generic test failed: expected string, got " + _typeFromFill);
return false;
GetCalliGeneric<string>()();
if (_typeFromFill != typeof(string))
{
Console.WriteLine("Calli generic test failed: expected string, got " + _typeFromFill);
return false;
}
}
return true;
}
Expand Down