From d59d80591991fa4f14d276ec17dbeb56fbe9d5ae Mon Sep 17 00:00:00 2001 From: Radek Doulik Date: Mon, 7 Sep 2026 16:49:25 +0200 Subject: [PATCH 1/2] [wasm] Build a test-specific corerun for nine more runtime tests #131877 replaced the hardcoded struct-size table in the wasm interop generator with crossgen2's type system, so nine of the projects that opted out of the test-specific corerun no longer need to. Each was verified by building and running it for browser-wasm: all nine link their own corerun.wasm and pass, so the methods gated on PlatformDoesNotSupportNativeTestAssets execute their native code instead of skipping. The remaining opt-outs stay. They are blocked on gaps this does not address, tracked by #131811. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: f6d6e5a4-5b25-4198-b42d-d5b2dc781f47 --- .../Interop/StructMarshalling/PInvoke/NestedStruct.csproj | 3 --- src/tests/JIT/Directed/StructABI/StructABI.csproj | 3 --- .../CdeclMemberFunction/CdeclMemberFunctionTest.csproj | 3 --- .../PlatformDefaultMemberFunctionTest.csproj | 3 --- .../StdCallMemberFunctionTest.csproj | 3 --- .../JIT/Directed/callconv/ThisCall/ThisCallTest.csproj | 3 --- src/tests/JIT/Methodical/Methodical_others.csproj | 8 -------- src/tests/JIT/SIMD/JIT.SIMD_r.csproj | 3 --- src/tests/JIT/SIMD/JIT.SIMD_ro.csproj | 3 --- 9 files changed, 32 deletions(-) diff --git a/src/tests/Interop/StructMarshalling/PInvoke/NestedStruct.csproj b/src/tests/Interop/StructMarshalling/PInvoke/NestedStruct.csproj index 2117b0240d0c28..ec5f3f9e09bd0b 100644 --- a/src/tests/Interop/StructMarshalling/PInvoke/NestedStruct.csproj +++ b/src/tests/Interop/StructMarshalling/PInvoke/NestedStruct.csproj @@ -1,8 +1,5 @@ - - false true true diff --git a/src/tests/JIT/Directed/StructABI/StructABI.csproj b/src/tests/JIT/Directed/StructABI/StructABI.csproj index e3e2edf031c45c..2c3ff385089a97 100644 --- a/src/tests/JIT/Directed/StructABI/StructABI.csproj +++ b/src/tests/JIT/Directed/StructABI/StructABI.csproj @@ -1,8 +1,5 @@ - - false true true diff --git a/src/tests/JIT/Directed/callconv/CdeclMemberFunction/CdeclMemberFunctionTest.csproj b/src/tests/JIT/Directed/callconv/CdeclMemberFunction/CdeclMemberFunctionTest.csproj index a55d78d80bc6a8..00eaa467d6d71d 100644 --- a/src/tests/JIT/Directed/callconv/CdeclMemberFunction/CdeclMemberFunctionTest.csproj +++ b/src/tests/JIT/Directed/callconv/CdeclMemberFunction/CdeclMemberFunctionTest.csproj @@ -1,8 +1,5 @@ - - false true true diff --git a/src/tests/JIT/Directed/callconv/PlatformDefaultMemberFunction/PlatformDefaultMemberFunctionTest.csproj b/src/tests/JIT/Directed/callconv/PlatformDefaultMemberFunction/PlatformDefaultMemberFunctionTest.csproj index a55d78d80bc6a8..00eaa467d6d71d 100644 --- a/src/tests/JIT/Directed/callconv/PlatformDefaultMemberFunction/PlatformDefaultMemberFunctionTest.csproj +++ b/src/tests/JIT/Directed/callconv/PlatformDefaultMemberFunction/PlatformDefaultMemberFunctionTest.csproj @@ -1,8 +1,5 @@ - - false true true diff --git a/src/tests/JIT/Directed/callconv/StdCallMemberFunction/StdCallMemberFunctionTest.csproj b/src/tests/JIT/Directed/callconv/StdCallMemberFunction/StdCallMemberFunctionTest.csproj index a55d78d80bc6a8..00eaa467d6d71d 100644 --- a/src/tests/JIT/Directed/callconv/StdCallMemberFunction/StdCallMemberFunctionTest.csproj +++ b/src/tests/JIT/Directed/callconv/StdCallMemberFunction/StdCallMemberFunctionTest.csproj @@ -1,8 +1,5 @@ - - false true true diff --git a/src/tests/JIT/Directed/callconv/ThisCall/ThisCallTest.csproj b/src/tests/JIT/Directed/callconv/ThisCall/ThisCallTest.csproj index eb79a419f38928..c943b6059364df 100644 --- a/src/tests/JIT/Directed/callconv/ThisCall/ThisCallTest.csproj +++ b/src/tests/JIT/Directed/callconv/ThisCall/ThisCallTest.csproj @@ -1,8 +1,5 @@ - - false true true diff --git a/src/tests/JIT/Methodical/Methodical_others.csproj b/src/tests/JIT/Methodical/Methodical_others.csproj index b066e9e59aee67..656f2a7525413a 100644 --- a/src/tests/JIT/Methodical/Methodical_others.csproj +++ b/src/tests/JIT/Methodical/Methodical_others.csproj @@ -3,14 +3,6 @@ true true - - false diff --git a/src/tests/JIT/SIMD/JIT.SIMD_r.csproj b/src/tests/JIT/SIMD/JIT.SIMD_r.csproj index e56376ee4541af..eb34db5f9aa741 100644 --- a/src/tests/JIT/SIMD/JIT.SIMD_r.csproj +++ b/src/tests/JIT/SIMD/JIT.SIMD_r.csproj @@ -1,8 +1,5 @@ - - false None true diff --git a/src/tests/JIT/SIMD/JIT.SIMD_ro.csproj b/src/tests/JIT/SIMD/JIT.SIMD_ro.csproj index 20f7d75b0403b2..f0ed6c7ffc56d3 100644 --- a/src/tests/JIT/SIMD/JIT.SIMD_ro.csproj +++ b/src/tests/JIT/SIMD/JIT.SIMD_ro.csproj @@ -1,8 +1,5 @@ - - false None True true From 56570a08e2ace59cde7e82773e63645124be5be0 Mon Sep 17 00:00:00 2001 From: Radek Doulik Date: Tue, 8 Sep 2026 10:56:46 +0200 Subject: [PATCH 2/2] [wasm] Gate Vector3 reverse P/Invoke on browser Keep the forward P/Invoke checks enabled on browser CoreCLR while skipping only the unsupported reverse P/Invoke delegate entrypoints. CoreCLR does not support dynamic delegate entrypoints on WebAssembly, so the reverse P/Invoke half throws PlatformNotSupportedException after the forward checks pass. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 9731bbb0-50e7-4cde-ba90-73c91c465369 --- src/tests/JIT/SIMD/Vector3Interop.cs | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/src/tests/JIT/SIMD/Vector3Interop.cs b/src/tests/JIT/SIMD/Vector3Interop.cs index d50bc896c47986..0b9cb041581afc 100644 --- a/src/tests/JIT/SIMD/Vector3Interop.cs +++ b/src/tests/JIT/SIMD/Vector3Interop.cs @@ -563,16 +563,29 @@ public class Test_Vector3Interop [Fact] public static int TestEntryPoint() { - if (!PInvokeTest.test()) { return 101; } - - if (!RPInvokeTest.test()) + + return 100; + } + + [ActiveIssue("https://github.com/dotnet/runtime/issues/90427", typeof(PlatformDetection), nameof(PlatformDetection.IsMonoLLVMFULLAOT))] + [ActiveIssue("https://github.com/dotnet/runtime/issues/90427", typeof(PlatformDetection), nameof(PlatformDetection.IsMonoMINIFULLAOT))] + [ActiveIssue("https://github.com/dotnet/runtime/issues/96051", typeof(PlatformDetection), nameof(PlatformDetection.IsMonoInterpreter), nameof(PlatformDetection.IsArm64Process), nameof(PlatformDetection.IsOSX))] + [ActiveIssue("https://github.com/dotnet/runtime/issues/92129", TestPlatforms.iOS | TestPlatforms.tvOS | TestPlatforms.MacCatalyst)] + [ActiveIssue("https://github.com/dotnet/runtime/issues/127827", typeof(TestLibrary.CoreClrConfigurationDetection), nameof(TestLibrary.CoreClrConfigurationDetection.IsGCStressC))] + [ActiveIssue("https://github.com/dotnet/runtime/issues/123946", typeof(PlatformDetection), nameof(PlatformDetection.PlatformDoesNotSupportNativeTestAssets))] + [ActiveIssue("https://github.com/dotnet/runtime/issues/131811", typeof(PlatformDetection), nameof(PlatformDetection.IsBrowser), nameof(PlatformDetection.IsCoreCLR))] + [Fact] + public static int TestReversePInvoke() + { + if (!RPInvokeTest.test()) { return 101; } + return 100; - } + } }