diff --git a/.config/dotnet-tools.json b/.config/dotnet-tools.json index 2f4ce2358e0207..b832a0b13a0ce6 100644 --- a/.config/dotnet-tools.json +++ b/.config/dotnet-tools.json @@ -15,7 +15,7 @@ ] }, "microsoft.dotnet.xharness.cli": { - "version": "9.0.0-prerelease.24405.1", + "version": "9.0.0-prerelease.24575.3", "commands": [ "xharness" ] diff --git a/.github/PULL_REQUEST_TEMPLATE/servicing_pull_request_template.md b/.github/PULL_REQUEST_TEMPLATE/servicing_pull_request_template.md index 9a748a085a20f1..cfd64682e8313e 100644 --- a/.github/PULL_REQUEST_TEMPLATE/servicing_pull_request_template.md +++ b/.github/PULL_REQUEST_TEMPLATE/servicing_pull_request_template.md @@ -22,6 +22,7 @@ main PR -# Package authoring signed off? +# Package authoring no longer needed in .NET 9 -IMPORTANT: If this change touches code that ships in a NuGet package, please make certain that you have added any necessary [package authoring](../../docs/project/library-servicing.md) and gotten it explicitly reviewed. +IMPORTANT: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version. +Keep in mind that we still need package authoring in .NET 8 and older versions. \ No newline at end of file diff --git a/.github/workflows/backport.yml b/.github/workflows/backport.yml index f8165363070ea5..67ddf782dc0d14 100644 --- a/.github/workflows/backport.yml +++ b/.github/workflows/backport.yml @@ -48,4 +48,7 @@ jobs: - The PR target branch is `release/X.0-staging`, not `release/X.0`. - - If the change touches code that ships in a NuGet package, you have added the necessary [package authoring](https://github.com/dotnet/runtime/blob/main/docs/project/library-servicing.md) and gotten it explicitly reviewed. + ## Package authoring no longer needed in .NET 9 + + **IMPORTANT**: Starting with .NET 9, you no longer need to edit a NuGet package's csproj to enable building and bump the version. + Keep in mind that we still need package authoring in .NET 8 and older versions. \ No newline at end of file diff --git a/.github/workflows/jit-format.yml b/.github/workflows/jit-format.yml index be0a5d854a9caa..18fb209c628afc 100644 --- a/.github/workflows/jit-format.yml +++ b/.github/workflows/jit-format.yml @@ -15,7 +15,7 @@ jobs: os: - name: linux image: ubuntu-latest - container: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-cross-amd64-net9.0 + container: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net9.0-cross-amd64 extension: '.sh' cross: '--cross' rootfs: '/crossrootfs/x64' diff --git a/Directory.Build.props b/Directory.Build.props index 688fcaec63b4f6..530286a2719d7e 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -121,9 +121,8 @@ - - 8.0.0 - net8.0 + 9.0.0 + net9.0 diff --git a/NuGet.config b/NuGet.config index 21830cd57b0879..2681a9c8538dfb 100644 --- a/NuGet.config +++ b/NuGet.config @@ -9,8 +9,15 @@ + + + + + + + - + https://github.com/dotnet/cecil - e51bd3677d5674fa34bf5676c5fc5562206bf94e + 72791f7604750fb8af9249b94318547c5f1d6683 @@ -79,152 +79,152 @@ - + https://github.com/dotnet/source-build-reference-packages - c43ee853e96528e2f2eb0f6d8c151ddc07b6a844 + a3776f67d97bd5d9ada92122330454b284bfe915 - + https://github.com/dotnet/source-build-externals - 4df883d781a4290873b3b968afc0ff0df7132507 + ab469606a3e6b026dcac301e2dab96117c94faeb - + https://github.com/dotnet/arcade - 3c393bbd85ae16ddddba20d0b75035b0c6f1a52d + b41381d5cd633471265e9cd72e933a7048e03062 - + https://github.com/dotnet/arcade - 3c393bbd85ae16ddddba20d0b75035b0c6f1a52d + b41381d5cd633471265e9cd72e933a7048e03062 - + https://github.com/dotnet/arcade - 3c393bbd85ae16ddddba20d0b75035b0c6f1a52d + b41381d5cd633471265e9cd72e933a7048e03062 - + https://github.com/dotnet/arcade - 3c393bbd85ae16ddddba20d0b75035b0c6f1a52d + b41381d5cd633471265e9cd72e933a7048e03062 - + https://github.com/dotnet/arcade - 3c393bbd85ae16ddddba20d0b75035b0c6f1a52d + b41381d5cd633471265e9cd72e933a7048e03062 - + https://github.com/dotnet/arcade - 3c393bbd85ae16ddddba20d0b75035b0c6f1a52d + b41381d5cd633471265e9cd72e933a7048e03062 - + https://github.com/dotnet/arcade - 3c393bbd85ae16ddddba20d0b75035b0c6f1a52d + b41381d5cd633471265e9cd72e933a7048e03062 - + https://github.com/dotnet/arcade - 3c393bbd85ae16ddddba20d0b75035b0c6f1a52d + b41381d5cd633471265e9cd72e933a7048e03062 - + https://github.com/dotnet/arcade - 3c393bbd85ae16ddddba20d0b75035b0c6f1a52d + b41381d5cd633471265e9cd72e933a7048e03062 - + https://github.com/dotnet/arcade - 3c393bbd85ae16ddddba20d0b75035b0c6f1a52d + b41381d5cd633471265e9cd72e933a7048e03062 - + https://github.com/dotnet/arcade - 3c393bbd85ae16ddddba20d0b75035b0c6f1a52d + b41381d5cd633471265e9cd72e933a7048e03062 - + https://github.com/dotnet/arcade - 3c393bbd85ae16ddddba20d0b75035b0c6f1a52d + b41381d5cd633471265e9cd72e933a7048e03062 - + https://github.com/dotnet/arcade - 3c393bbd85ae16ddddba20d0b75035b0c6f1a52d + b41381d5cd633471265e9cd72e933a7048e03062 - + https://github.com/dotnet/arcade - 3c393bbd85ae16ddddba20d0b75035b0c6f1a52d + b41381d5cd633471265e9cd72e933a7048e03062 - + https://github.com/dotnet/arcade - 3c393bbd85ae16ddddba20d0b75035b0c6f1a52d + b41381d5cd633471265e9cd72e933a7048e03062 - + https://github.com/dotnet/arcade - 3c393bbd85ae16ddddba20d0b75035b0c6f1a52d + b41381d5cd633471265e9cd72e933a7048e03062 - + https://github.com/dotnet/arcade - 3c393bbd85ae16ddddba20d0b75035b0c6f1a52d + b41381d5cd633471265e9cd72e933a7048e03062 - + https://github.com/dotnet/arcade - 3c393bbd85ae16ddddba20d0b75035b0c6f1a52d + b41381d5cd633471265e9cd72e933a7048e03062 - + https://github.com/dotnet/arcade - 3c393bbd85ae16ddddba20d0b75035b0c6f1a52d + b41381d5cd633471265e9cd72e933a7048e03062 - + https://github.com/dotnet/arcade - 3c393bbd85ae16ddddba20d0b75035b0c6f1a52d + b41381d5cd633471265e9cd72e933a7048e03062 - + https://github.com/dotnet/runtime-assets - e98370e661a19bdfed31eefb8740ecfad255f9ed + be3ffb86e48ffd7f75babda38cba492aa058f04f - + https://github.com/dotnet/runtime-assets - e98370e661a19bdfed31eefb8740ecfad255f9ed + be3ffb86e48ffd7f75babda38cba492aa058f04f - + https://github.com/dotnet/runtime-assets - e98370e661a19bdfed31eefb8740ecfad255f9ed + be3ffb86e48ffd7f75babda38cba492aa058f04f - + https://github.com/dotnet/runtime-assets - e98370e661a19bdfed31eefb8740ecfad255f9ed + be3ffb86e48ffd7f75babda38cba492aa058f04f - + https://github.com/dotnet/runtime-assets - e98370e661a19bdfed31eefb8740ecfad255f9ed + be3ffb86e48ffd7f75babda38cba492aa058f04f - + https://github.com/dotnet/runtime-assets - e98370e661a19bdfed31eefb8740ecfad255f9ed + be3ffb86e48ffd7f75babda38cba492aa058f04f - + https://github.com/dotnet/runtime-assets - e98370e661a19bdfed31eefb8740ecfad255f9ed + be3ffb86e48ffd7f75babda38cba492aa058f04f - + https://github.com/dotnet/runtime-assets - e98370e661a19bdfed31eefb8740ecfad255f9ed + be3ffb86e48ffd7f75babda38cba492aa058f04f - + https://github.com/dotnet/runtime-assets - e98370e661a19bdfed31eefb8740ecfad255f9ed + be3ffb86e48ffd7f75babda38cba492aa058f04f - + https://github.com/dotnet/runtime-assets - e98370e661a19bdfed31eefb8740ecfad255f9ed + be3ffb86e48ffd7f75babda38cba492aa058f04f - + https://github.com/dotnet/runtime-assets - e98370e661a19bdfed31eefb8740ecfad255f9ed + be3ffb86e48ffd7f75babda38cba492aa058f04f - + https://github.com/dotnet/runtime-assets - e98370e661a19bdfed31eefb8740ecfad255f9ed + be3ffb86e48ffd7f75babda38cba492aa058f04f - + https://github.com/dotnet/runtime-assets - e98370e661a19bdfed31eefb8740ecfad255f9ed + be3ffb86e48ffd7f75babda38cba492aa058f04f https://github.com/dotnet/llvm-project @@ -320,21 +320,21 @@ https://github.com/dotnet/runtime b030c4dfdfa1bf287f10f96006619a06bc2000ae - + https://github.com/dotnet/xharness - 9794254fa909ff5adc46326e9b54009793f61dcd + 22c8d5baf6124c74e7cf3c1eaf4343cdf086b9e3 - + https://github.com/dotnet/xharness - 9794254fa909ff5adc46326e9b54009793f61dcd + 22c8d5baf6124c74e7cf3c1eaf4343cdf086b9e3 - + https://github.com/dotnet/xharness - 9794254fa909ff5adc46326e9b54009793f61dcd + 22c8d5baf6124c74e7cf3c1eaf4343cdf086b9e3 - + https://github.com/dotnet/arcade - 3c393bbd85ae16ddddba20d0b75035b0c6f1a52d + b41381d5cd633471265e9cd72e933a7048e03062 https://dev.azure.com/dnceng/internal/_git/dotnet-optimization @@ -352,48 +352,48 @@ https://dev.azure.com/dnceng/internal/_git/dotnet-optimization 9d7532585ce71e30ab55f0364d3cecccaf0775d1 - + https://github.com/dotnet/hotreload-utils - bf7e87a8574449a441bf905e2acd38e4aa25b3d4 + 4fcdfb487f36e9e27d90ad64294dbce7a15bc6ab - + https://github.com/dotnet/runtime-assets - e98370e661a19bdfed31eefb8740ecfad255f9ed + be3ffb86e48ffd7f75babda38cba492aa058f04f - + https://github.com/dotnet/roslyn - 3bff3622487486dec7794dfd0c71e05a52c313a4 + dfa7fc6bdea31a858a402168384192b633c811fa - + https://github.com/dotnet/roslyn - 3bff3622487486dec7794dfd0c71e05a52c313a4 + dfa7fc6bdea31a858a402168384192b633c811fa - + https://github.com/dotnet/roslyn - 3bff3622487486dec7794dfd0c71e05a52c313a4 + dfa7fc6bdea31a858a402168384192b633c811fa - + https://github.com/dotnet/roslyn-analyzers 3d61c57c73c3dd5f1f407ef9cd3414d94bf0eaf2 - + https://github.com/dotnet/roslyn-analyzers 3d61c57c73c3dd5f1f407ef9cd3414d94bf0eaf2 - + https://github.com/dotnet/roslyn - 3bff3622487486dec7794dfd0c71e05a52c313a4 + dfa7fc6bdea31a858a402168384192b633c811fa - + https://github.com/dotnet/sdk - 5b9d9d4677ea31d954533e9de2f95a3ea638135d + cbec38b13edc53f701225f8f087fb5a2dbfd3679 - + https://github.com/dotnet/sdk - 5b9d9d4677ea31d954533e9de2f95a3ea638135d + cbec38b13edc53f701225f8f087fb5a2dbfd3679 diff --git a/eng/Versions.props b/eng/Versions.props index d6e3efeb739c58..2bc631a253ac67 100644 --- a/eng/Versions.props +++ b/eng/Versions.props @@ -10,7 +10,7 @@ 8.0.11 7.0.20 6.0.36 - rtm + servicing @@ -36,17 +36,17 @@ - 3.11.0-beta1.24508.2 - 9.0.0-preview.24508.2 + 3.11.0-beta1.24574.2 + 9.0.0-preview.24574.2 - 4.12.0-3.24516.15 - 4.12.0-3.24516.15 - 4.12.0-3.24516.15 + 4.12.0-3.24574.8 + 4.12.0-3.24574.8 + 4.12.0-3.24574.8 - 9.0.100-rtm.24512.1 + 9.0.102 - 9.0.0-beta.24516.2 - 9.0.0-beta.24516.2 - 9.0.0-beta.24516.2 - 9.0.0-beta.24516.2 - 2.9.0-beta.24516.2 - 9.0.0-beta.24516.2 - 2.9.0-beta.24516.2 - 9.0.0-beta.24516.2 - 9.0.0-beta.24516.2 - 9.0.0-beta.24516.2 - 9.0.0-beta.24516.2 - 9.0.0-beta.24516.2 - 9.0.0-beta.24516.2 - 9.0.0-beta.24516.2 - 9.0.0-beta.24516.2 - 9.0.0-beta.24516.2 + 9.0.0-beta.24572.2 + 9.0.0-beta.24572.2 + 9.0.0-beta.24572.2 + 9.0.0-beta.24572.2 + 2.9.0-beta.24572.2 + 9.0.0-beta.24572.2 + 2.9.0-beta.24572.2 + 9.0.0-beta.24572.2 + 9.0.0-beta.24572.2 + 9.0.0-beta.24572.2 + 9.0.0-beta.24572.2 + 9.0.0-beta.24572.2 + 9.0.0-beta.24572.2 + 9.0.0-beta.24572.2 + 9.0.0-beta.24572.2 + 9.0.0-beta.24572.2 1.4.0 @@ -141,20 +141,20 @@ 8.0.0 8.0.0 - 9.0.0-beta.24459.2 - 9.0.0-beta.24459.2 - 9.0.0-beta.24459.2 - 9.0.0-beta.24459.2 - 9.0.0-beta.24459.2 - 9.0.0-beta.24459.2 - 9.0.0-beta.24459.2 - 9.0.0-beta.24459.2 - 9.0.0-beta.24459.2 - 9.0.0-beta.24459.2 - 9.0.0-beta.24459.2 - 9.0.0-beta.24459.2 - 9.0.0-beta.24459.2 - 9.0.0-beta.24459.2 + 9.0.0-beta.24517.2 + 9.0.0-beta.24517.2 + 9.0.0-beta.24517.2 + 9.0.0-beta.24517.2 + 9.0.0-beta.24517.2 + 9.0.0-beta.24517.2 + 9.0.0-beta.24517.2 + 9.0.0-beta.24517.2 + 9.0.0-beta.24517.2 + 9.0.0-beta.24517.2 + 9.0.0-beta.24517.2 + 9.0.0-beta.24517.2 + 9.0.0-beta.24517.2 + 9.0.0-beta.24517.2 1.0.0-prerelease.24462.2 1.0.0-prerelease.24462.2 @@ -184,10 +184,10 @@ 1.4.0 17.4.0-preview-20220707-01 - 9.0.0-prerelease.24405.1 - 9.0.0-prerelease.24405.1 - 9.0.0-prerelease.24405.1 - 9.0.0-alpha.0.24514.3 + 9.0.0-prerelease.24575.3 + 9.0.0-prerelease.24575.3 + 9.0.0-prerelease.24575.3 + 9.0.0-alpha.0.24561.2 3.12.0 4.5.0 6.0.0 @@ -215,11 +215,11 @@ 9.0.0-preview-20241010.1 - 0.11.5-alpha.24515.1 + 0.11.5-alpha.24602.1 9.0.0-rtm.24511.16 - 9.0.0-rtm.24516.3 + 9.0.0-rtm.24572.1 9.0.0-rtm.24466.4 2.4.3 diff --git a/eng/common/sdk-task.ps1 b/eng/common/sdk-task.ps1 index aab40de3fd9aca..4f0546dce1208d 100644 --- a/eng/common/sdk-task.ps1 +++ b/eng/common/sdk-task.ps1 @@ -64,7 +64,7 @@ try { $GlobalJson.tools | Add-Member -Name "vs" -Value (ConvertFrom-Json "{ `"version`": `"16.5`" }") -MemberType NoteProperty } if( -not ($GlobalJson.tools.PSObject.Properties.Name -match "xcopy-msbuild" )) { - $GlobalJson.tools | Add-Member -Name "xcopy-msbuild" -Value "17.10.0-pre.4.0" -MemberType NoteProperty + $GlobalJson.tools | Add-Member -Name "xcopy-msbuild" -Value "17.12.0" -MemberType NoteProperty } if ($GlobalJson.tools."xcopy-msbuild".Trim() -ine "none") { $xcopyMSBuildToolsFolder = InitializeXCopyMSBuild $GlobalJson.tools."xcopy-msbuild" -install $true diff --git a/eng/common/tools.ps1 b/eng/common/tools.ps1 index 22954477a5747f..aa94fb1745965d 100644 --- a/eng/common/tools.ps1 +++ b/eng/common/tools.ps1 @@ -383,8 +383,8 @@ function InitializeVisualStudioMSBuild([bool]$install, [object]$vsRequirements = # If the version of msbuild is going to be xcopied, # use this version. Version matches a package here: - # https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-eng/NuGet/Microsoft.DotNet.Arcade.MSBuild.Xcopy/versions/17.10.0-pre.4.0 - $defaultXCopyMSBuildVersion = '17.10.0-pre.4.0' + # https://dev.azure.com/dnceng/public/_artifacts/feed/dotnet-eng/NuGet/Microsoft.DotNet.Arcade.MSBuild.Xcopy/versions/17.12.0 + $defaultXCopyMSBuildVersion = '17.12.0' if (!$vsRequirements) { if (Get-Member -InputObject $GlobalJson.tools -Name 'vs') { diff --git a/eng/packaging.targets b/eng/packaging.targets index 99912459fe02c1..0bef49c86a16e7 100644 --- a/eng/packaging.targets +++ b/eng/packaging.targets @@ -27,8 +27,6 @@ PACKAGE.md $(BeforePack);ValidatePackageReadmeExists - - false true - - true false @@ -58,18 +48,6 @@ $(NoWarn);CP0003 - - - 0 - - - $(MajorVersion).$(MinorVersion).$(ServicingVersion) - $(Version)-$(VersionSuffix) - - @@ -325,14 +303,6 @@ - - - - diff --git a/eng/pipelines/common/templates/pipeline-with-resources.yml b/eng/pipelines/common/templates/pipeline-with-resources.yml index cf2b9f53e528b5..90851b8d725ee6 100644 --- a/eng/pipelines/common/templates/pipeline-with-resources.yml +++ b/eng/pipelines/common/templates/pipeline-with-resources.yml @@ -17,7 +17,7 @@ extends: containers: linux_arm: - image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-cross-arm-net9.0 + image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net9.0-cross-arm env: ROOTFS_DIR: /crossrootfs/arm @@ -27,44 +27,44 @@ extends: ROOTFS_DIR: /crossrootfs/armv6 linux_arm64: - image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-cross-arm64-net9.0 + image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net9.0-cross-arm64 env: ROOTFS_DIR: /crossrootfs/arm64 linux_musl_x64: - image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-cross-amd64-alpine-net9.0 + image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net9.0-cross-amd64-alpine env: ROOTFS_DIR: /crossrootfs/x64 linux_musl_arm: - image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-cross-arm-alpine-net9.0 + image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net9.0-cross-arm-alpine env: ROOTFS_DIR: /crossrootfs/arm linux_musl_arm64: - image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-cross-arm64-alpine-net9.0 + image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net9.0-cross-arm64-alpine env: ROOTFS_DIR: /crossrootfs/arm64 # This container contains all required toolsets to build for Android and for Linux with bionic libc. android: - image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-cross-android-amd64-net9.0 + image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net9.0-cross-android-amd64 # This container contains all required toolsets to build for Android and for Linux with bionic libc and a special layout of OpenSSL. linux_bionic: - image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-android-openssl-net9.0 + image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net9.0-android-openssl # This container contains all required toolsets to build for Android as well as tooling to build docker images. android_docker: - image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-android-docker-net9.0 + image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net9.0-android-docker linux_x64: - image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-cross-amd64-net9.0 + image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net9.0-cross-amd64 env: ROOTFS_DIR: /crossrootfs/x64 linux_x86: - image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-cross-x86-net9.0 + image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net9.0-cross-x86 env: ROOTFS_DIR: /crossrootfs/x86 @@ -75,7 +75,7 @@ extends: image: mcr.microsoft.com/dotnet-buildtools/prereqs:alpine-3.19-WithNode linux_x64_sanitizer: - image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-cross-amd64-net9.0-sanitizer + image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net9.0-cross-amd64-sanitizer env: ROOTFS_DIR: /crossrootfs/x64 @@ -88,17 +88,17 @@ extends: image: mcr.microsoft.com/dotnet-buildtools/prereqs:almalinux-8-source-build linux_s390x: - image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-cross-s390x-net9.0 + image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net9.0-cross-s390x env: ROOTFS_DIR: /crossrootfs/s390x linux_ppc64le: - image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-cross-ppc64le-net9.0 + image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net9.0-cross-ppc64le env: ROOTFS_DIR: /crossrootfs/ppc64le linux_riscv64: - image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-cross-riscv64-net9.0 + image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net9.0-cross-riscv64 env: ROOTFS_DIR: /crossrootfs/riscv64 @@ -109,17 +109,17 @@ extends: image: mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8 browser_wasm: - image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-webassembly-amd64-net9.0 + image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net9.0-webassembly-amd64 env: ROOTFS_DIR: /crossrootfs/x64 wasi_wasm: - image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-webassembly-amd64-net9.0 + image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net9.0-webassembly-amd64 env: ROOTFS_DIR: /crossrootfs/x64 freebsd_x64: - image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-cross-freebsd-13-net9.0 + image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net9.0-cross-freebsd-13 env: ROOTFS_DIR: /crossrootfs/x64 @@ -132,4 +132,4 @@ extends: image: mcr.microsoft.com/dotnet-buildtools/prereqs:ubuntu-22.04-debpkg rpmpkg: - image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-fpm-net9.0 + image: mcr.microsoft.com/dotnet-buildtools/prereqs:azurelinux-3.0-net9.0-fpm diff --git a/eng/pipelines/common/xplat-setup.yml b/eng/pipelines/common/xplat-setup.yml index f50a2db9e81ec5..39676f8fd9b292 100644 --- a/eng/pipelines/common/xplat-setup.yml +++ b/eng/pipelines/common/xplat-setup.yml @@ -170,12 +170,12 @@ jobs: # OSX Public Build Pool (we don't have on-prem OSX BuildPool). ${{ if and(in(parameters.osGroup, 'osx', 'maccatalyst', 'ios', 'iossimulator', 'tvos', 'tvossimulator'), eq(variables['System.TeamProject'], 'public')) }}: - vmImage: 'macos-12' + vmImage: 'macos-13' # OSX Internal Pool ${{ if and(in(parameters.osGroup, 'osx', 'maccatalyst', 'ios', 'iossimulator', 'tvos', 'tvossimulator'), ne(variables['System.TeamProject'], 'public')) }}: name: "Azure Pipelines" - vmImage: 'macOS-12' + vmImage: 'macOS-13' os: macOS # Official Build Windows Pool diff --git a/eng/pipelines/coreclr/perf-non-wasm-jobs.yml b/eng/pipelines/coreclr/perf-non-wasm-jobs.yml index df9c99e5297d63..78b035fa0228ea 100644 --- a/eng/pipelines/coreclr/perf-non-wasm-jobs.yml +++ b/eng/pipelines/coreclr/perf-non-wasm-jobs.yml @@ -374,7 +374,7 @@ jobs: nameSuffix: PerfBDNApp isOfficialBuild: false pool: - vmImage: 'macos-12' + vmImage: 'macos-13' postBuildSteps: - template: /eng/pipelines/coreclr/templates/build-perf-bdn-app.yml parameters: diff --git a/global.json b/global.json index 26b27962d3def5..9b468e3e90e4b2 100644 --- a/global.json +++ b/global.json @@ -1,16 +1,16 @@ { "sdk": { - "version": "9.0.100-rc.2.24474.11", + "version": "9.0.100", "allowPrerelease": true, "rollForward": "major" }, "tools": { - "dotnet": "9.0.100-rc.2.24474.11" + "dotnet": "9.0.100" }, "msbuild-sdks": { - "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.24516.2", - "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.24516.2", - "Microsoft.DotNet.SharedFramework.Sdk": "9.0.0-beta.24516.2", + "Microsoft.DotNet.Arcade.Sdk": "9.0.0-beta.24572.2", + "Microsoft.DotNet.Helix.Sdk": "9.0.0-beta.24572.2", + "Microsoft.DotNet.SharedFramework.Sdk": "9.0.0-beta.24572.2", "Microsoft.Build.NoTargets": "3.7.0", "Microsoft.Build.Traversal": "3.4.0", "Microsoft.NET.Sdk.IL": "9.0.0-rtm.24511.16" diff --git a/src/coreclr/gc/gc.cpp b/src/coreclr/gc/gc.cpp index 217e90d38c0228..9336ae7363631a 100644 --- a/src/coreclr/gc/gc.cpp +++ b/src/coreclr/gc/gc.cpp @@ -2890,10 +2890,14 @@ bool gc_heap::trigger_initial_gen2_p = false; #ifdef BACKGROUND_GC bool gc_heap::trigger_bgc_for_rethreading_p = false; +int gc_heap::total_bgc_threads = 0; +int gc_heap::last_bgc_n_heaps = 0; +int gc_heap::last_total_bgc_threads = 0; #endif //BACKGROUND_GC #ifdef STRESS_DYNAMIC_HEAP_COUNT int gc_heap::heaps_in_this_gc = 0; +int gc_heap::bgc_to_ngc2_ratio = 0; #endif //STRESS_DYNAMIC_HEAP_COUNT #endif // DYNAMIC_HEAP_COUNT @@ -6404,7 +6408,11 @@ class heap_select if (GCToOSInterface::CanGetCurrentProcessorNumber()) { uint32_t proc_no = GCToOSInterface::GetCurrentProcessorNumber(); - proc_no_to_heap_no[proc_no] = (uint16_t)heap_number; + // For a 32-bit process running on a machine with > 64 procs, + // even though the process can only use up to 32 procs, the processor + // index can be >= 64; or in the cpu group case, if the process is not running in cpu group #0, + // the GetCurrentProcessorNumber will return a number that's >= 64. + proc_no_to_heap_no[proc_no % MAX_SUPPORTED_CPUS] = (uint16_t)heap_number; } } @@ -6426,7 +6434,11 @@ class heap_select if (GCToOSInterface::CanGetCurrentProcessorNumber()) { uint32_t proc_no = GCToOSInterface::GetCurrentProcessorNumber(); - int adjusted_heap = proc_no_to_heap_no[proc_no]; + // For a 32-bit process running on a machine with > 64 procs, + // even though the process can only use up to 32 procs, the processor + // index can be >= 64; or in the cpu group case, if the process is not running in cpu group #0, + // the GetCurrentProcessorNumber will return a number that's >= 64. + int adjusted_heap = proc_no_to_heap_no[proc_no % MAX_SUPPORTED_CPUS]; // with dynamic heap count, need to make sure the value is in range. if (adjusted_heap >= gc_heap::n_heaps) { @@ -14182,6 +14194,11 @@ HRESULT gc_heap::initialize_gc (size_t soh_segment_size, if ((dynamic_adaptation_mode == dynamic_adaptation_to_application_sizes) && (conserve_mem_setting == 0)) conserve_mem_setting = 5; + +#ifdef STRESS_DYNAMIC_HEAP_COUNT + bgc_to_ngc2_ratio = (int)GCConfig::GetGCDBGCRatio(); + dprintf (1, ("bgc_to_ngc2_ratio is %d", bgc_to_ngc2_ratio)); +#endif #endif //DYNAMIC_HEAP_COUNT if (conserve_mem_setting < 0) @@ -21071,6 +21088,18 @@ int gc_heap::joined_generation_to_condemn (BOOL should_evaluate_elevation, if (!((n == max_generation) && *blocking_collection_p)) { n = max_generation; + +#ifdef STRESS_DYNAMIC_HEAP_COUNT + if (bgc_to_ngc2_ratio) + { + int r = (int)gc_rand::get_rand ((bgc_to_ngc2_ratio + 1) * 10); + dprintf (6666, ("%d - making this full GC %s", r, ((r < 10) ? "NGC2" : "BGC"))); + if (r < 10) + { + *blocking_collection_p = TRUE; + } + } +#endif //STRESS_DYNAMIC_HEAP_COUNT } } } @@ -24332,12 +24361,37 @@ void gc_heap::garbage_collect (int n) size_t saved_bgc_th_count_creation_failed = bgc_th_count_creation_failed; #endif //DYNAMIC_HEAP_COUNT + // This is the count of threads that GCToEEInterface::CreateThread reported successful for. + int total_bgc_threads_running = 0; for (int i = 0; i < n_heaps; i++) { - prepare_bgc_thread (g_heaps[i]); + gc_heap* hp = g_heaps[i]; + if (prepare_bgc_thread (hp)) + { + assert (hp->bgc_thread_running); + if (!hp->bgc_thread_running) + { + dprintf (6666, ("h%d prepare succeeded but running is still false!", i)); + GCToOSInterface::DebugBreak(); + } + total_bgc_threads_running++; + } + else + { + break; + } } #ifdef DYNAMIC_HEAP_COUNT + // Even if we don't do a BGC, we need to record how many threads were successfully created because those will + // be running. + total_bgc_threads = max (total_bgc_threads, total_bgc_threads_running); + + if (total_bgc_threads_running != n_heaps) + { + dprintf (6666, ("wanted to have %d BGC threads but only have %d", n_heaps, total_bgc_threads_running)); + } + add_to_bgc_th_creation_history (current_gc_index, (bgc_th_count_created - saved_bgc_th_count_created), (bgc_th_count_created_th_existed - saved_bgc_th_count_created_th_existed), @@ -24369,7 +24423,15 @@ void gc_heap::garbage_collect (int n) for (int i = 0; i < n_heaps; i++) { gc_heap* hp = g_heaps[i]; - if (!(hp->bgc_thread) || !hp->commit_mark_array_bgc_init()) + + if (!(hp->bgc_thread_running)) + { + assert (!(hp->bgc_thread)); + } + + // In theory we could be in a situation where bgc_thread_running is false but bgc_thread is non NULL. We don't + // support this scenario so don't do a BGC. + if (!(hp->bgc_thread_running && hp->bgc_thread && hp->commit_mark_array_bgc_init())) { do_concurrent_p = FALSE; break; @@ -24389,8 +24451,37 @@ void gc_heap::garbage_collect (int n) } #endif //MULTIPLE_HEAPS +#ifdef DYNAMIC_HEAP_COUNT + dprintf (6666, ("last BGC saw %d heaps and %d total threads, currently %d heaps and %d total threads, %s BGC", + last_bgc_n_heaps, last_total_bgc_threads, n_heaps, total_bgc_threads, (do_concurrent_p ? "doing" : "not doing"))); +#endif //DYNAMIC_HEAP_COUNT + if (do_concurrent_p) { +#ifdef DYNAMIC_HEAP_COUNT + int diff = n_heaps - last_bgc_n_heaps; + if (diff > 0) + { + int saved_idle_bgc_thread_count = dynamic_heap_count_data.idle_bgc_thread_count; + int max_idle_event_count = min (n_heaps, last_total_bgc_threads); + int idle_events_to_set = max_idle_event_count - last_bgc_n_heaps; + if (idle_events_to_set > 0) + { + Interlocked::ExchangeAdd (&dynamic_heap_count_data.idle_bgc_thread_count, -idle_events_to_set); + dprintf (6666, ("%d BGC threads exist, setting %d idle events for h%d-h%d, total idle %d -> %d", + total_bgc_threads, idle_events_to_set, last_bgc_n_heaps, (last_bgc_n_heaps + idle_events_to_set - 1), + saved_idle_bgc_thread_count, VolatileLoadWithoutBarrier (&dynamic_heap_count_data.idle_bgc_thread_count))); + for (int heap_idx = last_bgc_n_heaps; heap_idx < max_idle_event_count; heap_idx++) + { + g_heaps[heap_idx]->bgc_idle_thread_event.Set(); + } + } + } + + last_bgc_n_heaps = n_heaps; + last_total_bgc_threads = total_bgc_threads; +#endif //DYNAMIC_HEAP_COUNT + #ifdef FEATURE_USE_SOFTWARE_WRITE_WATCH_FOR_GC_HEAP SoftwareWriteWatch::EnableForGCHeap(); #endif //FEATURE_USE_SOFTWARE_WRITE_WATCH_FOR_GC_HEAP @@ -25918,9 +26009,6 @@ void gc_heap::check_heap_count () for (int heap_idx = n_heaps; heap_idx < new_n_heaps; heap_idx++) { g_heaps[heap_idx]->gc_idle_thread_event.Set(); -#ifdef BACKGROUND_GC - g_heaps[heap_idx]->bgc_idle_thread_event.Set(); -#endif //BACKGROUND_GC } } @@ -37637,6 +37725,19 @@ void gc_heap::gc_thread_stub (void* arg) void gc_heap::bgc_thread_stub (void* arg) { gc_heap* heap = (gc_heap*)arg; + +#ifdef STRESS_DYNAMIC_HEAP_COUNT + // We should only do this every so often; otherwise we'll never be able to do a BGC + int r = (int)gc_rand::get_rand (30); + bool wait_p = (r < 10); + + if (wait_p) + { + GCToOSInterface::Sleep (100); + } + dprintf (6666, ("h%d %s", heap->heap_number, (wait_p ? "waited" : "did not wait"))); +#endif + heap->bgc_thread = GCToEEInterface::GetThread(); assert(heap->bgc_thread != nullptr); heap->bgc_thread_function(); @@ -39429,6 +39530,8 @@ void gc_heap::add_to_bgc_th_creation_history (size_t gc_index, size_t count_crea } #endif //DYNAMIC_HEAP_COUNT +// If this returns TRUE, we are saying we expect that thread to be there. However, when that thread is available to work is indeterministic. +// But when we actually start a BGC, naturally we'll need to wait till it gets to the point it can work. BOOL gc_heap::prepare_bgc_thread(gc_heap* gh) { BOOL success = FALSE; @@ -39440,7 +39543,19 @@ BOOL gc_heap::prepare_bgc_thread(gc_heap* gh) dprintf (2, ("GC thread not running")); if (gh->bgc_thread == 0) { +#ifdef STRESS_DYNAMIC_HEAP_COUNT + // to stress, we just don't actually try to create the thread to simulate a failure + int r = (int)gc_rand::get_rand (100); + bool try_to_create_p = (r > 10); + BOOL thread_created_p = (try_to_create_p ? create_bgc_thread (gh) : FALSE); + if (!thread_created_p) + { + dprintf (6666, ("h%d we failed to create the thread, %s", gh->heap_number, (try_to_create_p ? "tried" : "didn't try"))); + } + if (thread_created_p) +#else //STRESS_DYNAMIC_HEAP_COUNT if (create_bgc_thread(gh)) +#endif //STRESS_DYNAMIC_HEAP_COUNT { success = TRUE; thread_created = TRUE; @@ -39458,8 +39573,11 @@ BOOL gc_heap::prepare_bgc_thread(gc_heap* gh) else { #ifdef DYNAMIC_HEAP_COUNT + // This would be a very unusual scenario where GCToEEInterface::CreateThread told us it failed yet the thread was created. bgc_th_count_created_th_existed++; + dprintf (6666, ("h%d we cannot have a thread that runs yet CreateThread reported it failed to create it", gh->heap_number)); #endif //DYNAMIC_HEAP_COUNT + assert (!"GCToEEInterface::CreateThread returned FALSE yet the thread was created!"); } } else @@ -39657,7 +39775,7 @@ void gc_heap::bgc_thread_function() while (1) { // Wait for work to do... - dprintf (3, ("bgc thread: waiting...")); + dprintf (6666, ("h%d bgc thread: waiting...", heap_number)); cooperative_mode = enable_preemptive (); //current_thread->m_fPreemptiveGCDisabled = 0; @@ -39706,36 +39824,71 @@ void gc_heap::bgc_thread_function() continue; } } + +#ifdef STRESS_DYNAMIC_HEAP_COUNT + if (n_heaps <= heap_number) + { + uint32_t delay_ms = (uint32_t)gc_rand::get_rand (200); + GCToOSInterface::Sleep (delay_ms); + } +#endif //STRESS_DYNAMIC_HEAP_COUNT + // if we signal the thread with no concurrent work to do -> exit if (!settings.concurrent) { - dprintf (3, ("no concurrent GC needed, exiting")); + dprintf (6666, ("h%d no concurrent GC needed, exiting", heap_number)); + +#ifdef STRESS_DYNAMIC_HEAP_COUNT + flush_gc_log (true); + GCToOSInterface::DebugBreak(); +#endif break; } - gc_background_running = TRUE; - dprintf (2, (ThreadStressLog::gcStartBgcThread(), heap_number, - generation_free_list_space (generation_of (max_generation)), - generation_free_obj_space (generation_of (max_generation)), - dd_fragmentation (dynamic_data_of (max_generation)))); #ifdef DYNAMIC_HEAP_COUNT if (n_heaps <= heap_number) { + Interlocked::Increment (&dynamic_heap_count_data.idle_bgc_thread_count); add_to_bgc_hc_history (hc_record_bgc_inactive); // this is the case where we have more background GC threads than heaps // - wait until we're told to continue... - dprintf (9999, ("BGC thread %d idle (%d heaps) (gc%Id)", heap_number, n_heaps, VolatileLoadWithoutBarrier (&settings.gc_index))); + dprintf (6666, ("BGC%Id h%d going idle (%d heaps), idle count is now %d", + VolatileLoadWithoutBarrier (&settings.gc_index), heap_number, n_heaps, VolatileLoadWithoutBarrier (&dynamic_heap_count_data.idle_bgc_thread_count))); bgc_idle_thread_event.Wait(INFINITE, FALSE); - dprintf (9999, ("BGC thread %d waking from idle (%d heaps) (gc%Id)", heap_number, n_heaps, VolatileLoadWithoutBarrier (&settings.gc_index))); + dprintf (6666, ("BGC%Id h%d woke from idle (%d heaps), idle count is now %d", + VolatileLoadWithoutBarrier (&settings.gc_index), heap_number, n_heaps, VolatileLoadWithoutBarrier (&dynamic_heap_count_data.idle_bgc_thread_count))); continue; } else { + if (heap_number == 0) + { + const int spin_count = 1024; + int idle_bgc_thread_count = total_bgc_threads - n_heaps; + dprintf (6666, ("n_heaps %d, total %d bgc threads, bgc idle should be %d and is %d", + n_heaps, total_bgc_threads, idle_bgc_thread_count, VolatileLoadWithoutBarrier (&dynamic_heap_count_data.idle_bgc_thread_count))); + if (idle_bgc_thread_count != dynamic_heap_count_data.idle_bgc_thread_count) + { + dprintf (6666, ("current idle is %d, trying to get to %d", + VolatileLoadWithoutBarrier (&dynamic_heap_count_data.idle_bgc_thread_count), idle_bgc_thread_count)); + spin_and_wait (spin_count, (idle_bgc_thread_count == dynamic_heap_count_data.idle_bgc_thread_count)); + } + } + add_to_bgc_hc_history (hc_record_bgc_active); } #endif //DYNAMIC_HEAP_COUNT + if (heap_number == 0) + { + gc_background_running = TRUE; + dprintf (6666, (ThreadStressLog::gcStartBgcThread(), heap_number, + generation_free_list_space (generation_of (max_generation)), + generation_free_obj_space (generation_of (max_generation)), + dd_fragmentation (dynamic_data_of (max_generation)))); + } + gc1(); #ifndef DOUBLY_LINKED_FL diff --git a/src/coreclr/gc/gcconfig.h b/src/coreclr/gc/gcconfig.h index 6952355a677bd2..c74a3b1f286ab7 100644 --- a/src/coreclr/gc/gcconfig.h +++ b/src/coreclr/gc/gcconfig.h @@ -142,8 +142,9 @@ class GCConfigStringHolder INT_CONFIG (GCSpinCountUnit, "GCSpinCountUnit", NULL, 0, "Specifies the spin count unit used by the GC.") \ INT_CONFIG (GCDynamicAdaptationMode, "GCDynamicAdaptationMode", "System.GC.DynamicAdaptationMode", 1, "Enable the GC to dynamically adapt to application sizes.") \ INT_CONFIG (GCDTargetTCP, "GCDTargetTCP", "System.GC.DTargetTCP", 0, "Specifies the target tcp for DATAS") \ - BOOL_CONFIG (GCLogBGCThreadId, "GCLogBGCThreadId", NULL, false, "Specifies if BGC ThreadId should be logged") - + INT_CONFIG (GCDBGCRatio, " GCDBGCRatio", NULL, 0, "Specifies the ratio of BGC to NGC2 for HC change") \ + BOOL_CONFIG (GCLogBGCThreadId, "GCLogBGCThreadId", NULL, false, "Specifies if BGC ThreadId should be logged") \ + BOOL_CONFIG (GCCacheSizeFromSysConf, "GCCacheSizeFromSysConf", NULL, false, "Specifies using sysconf to retrieve the last level cache size for Unix.") // This class is responsible for retreiving configuration information // for how the GC should operate. diff --git a/src/coreclr/gc/gcpriv.h b/src/coreclr/gc/gcpriv.h index 9486645259936a..0d1d31daeb6173 100644 --- a/src/coreclr/gc/gcpriv.h +++ b/src/coreclr/gc/gcpriv.h @@ -5175,6 +5175,9 @@ class gc_heap int last_n_heaps; // don't start a GC till we see (n_max_heaps - new_n_heaps) number of threads idling VOLATILE(int32_t) idle_thread_count; +#ifdef BACKGROUND_GC + VOLATILE(int32_t) idle_bgc_thread_count; +#endif bool init_only_p; bool should_change_heap_count; @@ -5202,6 +5205,17 @@ class gc_heap // This is set when change_heap_count wants the next GC to be a BGC for rethreading gen2 FL // and reset during that BGC. PER_HEAP_ISOLATED_FIELD_MAINTAINED bool trigger_bgc_for_rethreading_p; + // BGC threads are created on demand but we don't destroy the ones we created. This + // is to track how many we've created. They may or may not be active depending on + // if they are needed. + PER_HEAP_ISOLATED_FIELD_MAINTAINED int total_bgc_threads; + + // HC last BGC observed. + PER_HEAP_ISOLATED_FIELD_MAINTAINED int last_bgc_n_heaps; + // Number of total BGC threads last BGC observed. This tells us how many new BGC threads have + // been created since. Note that just because a BGC thread is created doesn't mean it's used. + // We can fail at committing mark array and not proceed with the BGC. + PER_HEAP_ISOLATED_FIELD_MAINTAINED int last_total_bgc_threads; #endif //BACKGROUND_GC #endif //DYNAMIC_HEAP_COUNT @@ -5352,6 +5366,9 @@ class gc_heap #ifdef DYNAMIC_HEAP_COUNT PER_HEAP_ISOLATED_FIELD_INIT_ONLY int dynamic_adaptation_mode; +#ifdef STRESS_DYNAMIC_HEAP_COUNT + PER_HEAP_ISOLATED_FIELD_INIT_ONLY int bgc_to_ngc2_ratio; +#endif //STRESS_DYNAMIC_HEAP_COUNT #endif //DYNAMIC_HEAP_COUNT /********************************************/ diff --git a/src/coreclr/gc/unix/CMakeLists.txt b/src/coreclr/gc/unix/CMakeLists.txt index 83c0bf8a67d8b4..f88b039609881e 100644 --- a/src/coreclr/gc/unix/CMakeLists.txt +++ b/src/coreclr/gc/unix/CMakeLists.txt @@ -1,5 +1,6 @@ set(CMAKE_INCLUDE_CURRENT_DIR ON) include_directories("../env") +include_directories("..") include(configure.cmake) diff --git a/src/coreclr/gc/unix/gcenv.unix.cpp b/src/coreclr/gc/unix/gcenv.unix.cpp index 879397c4493c40..7c2101431c9128 100644 --- a/src/coreclr/gc/unix/gcenv.unix.cpp +++ b/src/coreclr/gc/unix/gcenv.unix.cpp @@ -18,8 +18,10 @@ #include "gcenv.structs.h" #include "gcenv.base.h" #include "gcenv.os.h" +#include "gcenv.ee.h" #include "gcenv.unix.inl" #include "volatile.h" +#include "gcconfig.h" #include "numasupport.h" #if HAVE_SWAPCTL @@ -862,10 +864,10 @@ bool ReadMemoryValueFromFile(const char* filename, uint64_t* val) return result; } -static size_t GetLogicalProcessorCacheSizeFromOS() +static void GetLogicalProcessorCacheSizeFromSysConf(size_t* cacheLevel, size_t* cacheSize) { - size_t cacheLevel = 0; - size_t cacheSize = 0; + assert (cacheLevel != nullptr); + assert (cacheSize != nullptr); #if defined(_SC_LEVEL1_DCACHE_SIZE) || defined(_SC_LEVEL2_CACHE_SIZE) || defined(_SC_LEVEL3_CACHE_SIZE) || defined(_SC_LEVEL4_CACHE_SIZE) const int cacheLevelNames[] = @@ -881,47 +883,105 @@ static size_t GetLogicalProcessorCacheSizeFromOS() long size = sysconf(cacheLevelNames[i]); if (size > 0) { - cacheSize = (size_t)size; - cacheLevel = i + 1; + *cacheSize = (size_t)size; + *cacheLevel = i + 1; break; } } #endif +} + +static void GetLogicalProcessorCacheSizeFromSysFs(size_t* cacheLevel, size_t* cacheSize) +{ + assert (cacheLevel != nullptr); + assert (cacheSize != nullptr); #if defined(TARGET_LINUX) && !defined(HOST_ARM) && !defined(HOST_X86) - if (cacheSize == 0) + // + // Retrieve cachesize via sysfs by reading the file /sys/devices/system/cpu/cpu0/cache/index{LastLevelCache}/size + // for the platform. Currently musl and arm64 should be only cases to use + // this method to determine cache size. + // + size_t level; + char path_to_size_file[] = "/sys/devices/system/cpu/cpu0/cache/index-/size"; + char path_to_level_file[] = "/sys/devices/system/cpu/cpu0/cache/index-/level"; + int index = 40; + assert(path_to_size_file[index] == '-'); + assert(path_to_level_file[index] == '-'); + + for (int i = 0; i < 5; i++) { - // - // Fallback to retrieve cachesize via /sys/.. if sysconf was not available - // for the platform. Currently musl and arm64 should be only cases to use - // this method to determine cache size. - // - size_t level; - char path_to_size_file[] = "/sys/devices/system/cpu/cpu0/cache/index-/size"; - char path_to_level_file[] = "/sys/devices/system/cpu/cpu0/cache/index-/level"; - int index = 40; - assert(path_to_size_file[index] == '-'); - assert(path_to_level_file[index] == '-'); - - for (int i = 0; i < 5; i++) - { - path_to_size_file[index] = (char)(48 + i); + path_to_size_file[index] = (char)(48 + i); - uint64_t cache_size_from_sys_file = 0; + uint64_t cache_size_from_sys_file = 0; - if (ReadMemoryValueFromFile(path_to_size_file, &cache_size_from_sys_file)) - { - cacheSize = std::max(cacheSize, (size_t)cache_size_from_sys_file); + if (ReadMemoryValueFromFile(path_to_size_file, &cache_size_from_sys_file)) + { + *cacheSize = std::max(*cacheSize, (size_t)cache_size_from_sys_file); - path_to_level_file[index] = (char)(48 + i); - if (ReadMemoryValueFromFile(path_to_level_file, &level)) - { - cacheLevel = level; - } + path_to_level_file[index] = (char)(48 + i); + if (ReadMemoryValueFromFile(path_to_level_file, &level)) + { + *cacheLevel = level; } } } +#endif +} + +static void GetLogicalProcessorCacheSizeFromHeuristic(size_t* cacheLevel, size_t* cacheSize) +{ + assert (cacheLevel != nullptr); + assert (cacheSize != nullptr); + +#if (defined(TARGET_LINUX) && !defined(TARGET_APPLE)) + { + // Use the following heuristics at best depending on the CPU count + // 1 ~ 4 : 4 MB + // 5 ~ 16 : 8 MB + // 17 ~ 64 : 16 MB + // 65+ : 32 MB + DWORD logicalCPUs = g_processAffinitySet.Count(); + if (logicalCPUs < 5) + { + *cacheSize = 4; + } + else if (logicalCPUs < 17) + { + *cacheSize = 8; + } + else if (logicalCPUs < 65) + { + *cacheSize = 16; + } + else + { + *cacheSize = 32; + } + + *cacheSize *= (1024 * 1024); + } #endif +} + +static size_t GetLogicalProcessorCacheSizeFromOS() +{ + size_t cacheLevel = 0; + size_t cacheSize = 0; + + if (GCConfig::GetGCCacheSizeFromSysConf()) + { + GetLogicalProcessorCacheSizeFromSysConf(&cacheLevel, &cacheSize); + } + + if (cacheSize == 0) + { + GetLogicalProcessorCacheSizeFromSysFs(&cacheLevel, &cacheSize); + if (cacheSize == 0) + { + GetLogicalProcessorCacheSizeFromHeuristic(&cacheLevel, &cacheSize); + } + } #if HAVE_SYSCTLBYNAME if (cacheSize == 0) @@ -948,32 +1008,7 @@ static size_t GetLogicalProcessorCacheSizeFromOS() #if (defined(HOST_ARM64) || defined(HOST_LOONGARCH64)) && !defined(TARGET_APPLE) if (cacheLevel != 3) { - // We expect to get the L3 cache size for Arm64 but currently expected to be missing that info - // from most of the machines. - // Hence, just use the following heuristics at best depending on the CPU count - // 1 ~ 4 : 4 MB - // 5 ~ 16 : 8 MB - // 17 ~ 64 : 16 MB - // 65+ : 32 MB - DWORD logicalCPUs = g_processAffinitySet.Count(); - if (logicalCPUs < 5) - { - cacheSize = 4; - } - else if (logicalCPUs < 17) - { - cacheSize = 8; - } - else if (logicalCPUs < 65) - { - cacheSize = 16; - } - else - { - cacheSize = 32; - } - - cacheSize *= (1024 * 1024); + GetLogicalProcessorCacheSizeFromHeuristic(&cacheLevel, &cacheSize); } #endif diff --git a/src/coreclr/vm/prestub.cpp b/src/coreclr/vm/prestub.cpp index 0ad45e1110ceb4..e494c74667cba1 100644 --- a/src/coreclr/vm/prestub.cpp +++ b/src/coreclr/vm/prestub.cpp @@ -1497,7 +1497,7 @@ namespace TokenPairList list { nullptr }; MetaSig::CompareState state{ &list }; - state.IgnoreCustomModifiers = false; + state.IgnoreCustomModifiers = true; if (!DoesFieldMatchUnsafeAccessorDeclaration(cxt, pField, state)) continue; diff --git a/src/libraries/Common/src/Microsoft/Win32/SafeHandles/SafeCertContextHandleWithKeyContainerDeletion.cs b/src/libraries/Common/src/Microsoft/Win32/SafeHandles/SafeCertContextHandleWithKeyContainerDeletion.cs index 7488f624b90c47..59a84bc923097c 100644 --- a/src/libraries/Common/src/Microsoft/Win32/SafeHandles/SafeCertContextHandleWithKeyContainerDeletion.cs +++ b/src/libraries/Common/src/Microsoft/Win32/SafeHandles/SafeCertContextHandleWithKeyContainerDeletion.cs @@ -50,10 +50,16 @@ internal static void DeleteKeyContainer(SafeCertContextHandle pCertContext) string providerName = Marshal.PtrToStringUni((IntPtr)(pProvInfo->pwszProvName))!; string keyContainerName = Marshal.PtrToStringUni((IntPtr)(pProvInfo->pwszContainerName))!; + CngKeyOpenOptions openOpts = CngKeyOpenOptions.None; + + if ((pProvInfo->dwFlags & Interop.Crypt32.CryptAcquireContextFlags.CRYPT_MACHINE_KEYSET) != 0) + { + openOpts = CngKeyOpenOptions.MachineKey; + } try { - using (CngKey cngKey = CngKey.Open(keyContainerName, new CngProvider(providerName))) + using (CngKey cngKey = CngKey.Open(keyContainerName, new CngProvider(providerName), openOpts)) { cngKey.Delete(); } diff --git a/src/libraries/Directory.Build.props b/src/libraries/Directory.Build.props index 7ccc19377a2efb..77b995afb43bef 100644 --- a/src/libraries/Directory.Build.props +++ b/src/libraries/Directory.Build.props @@ -35,8 +35,6 @@ false false - - true diff --git a/src/libraries/Directory.Build.targets b/src/libraries/Directory.Build.targets index 5a3fff449e7bba..631ee908d4723e 100644 --- a/src/libraries/Directory.Build.targets +++ b/src/libraries/Directory.Build.targets @@ -72,12 +72,11 @@ + '$(IsPackable)' == 'true'"> <_IsWindowsDesktopApp Condition="$(WindowsDesktopCoreAppLibrary.Contains('$(AssemblyName);'))">true <_IsAspNetCoreApp Condition="$(AspNetCoreAppLibrary.Contains('$(AssemblyName);'))">true <_AssemblyInTargetingPack Condition="('$(IsNETCoreAppSrc)' == 'true' or '$(IsNetCoreAppRef)' == 'true' or '$(_IsAspNetCoreApp)' == 'true' or '$(_IsWindowsDesktopApp)' == 'true') and '$(TargetFrameworkIdentifier)' != '.NETFramework'">true - $(MajorVersion).$(MinorVersion).0.$(ServicingVersion) + $(MajorVersion).$(MinorVersion).0.$(PatchVersion) diff --git a/src/libraries/Microsoft.Extensions.Logging.Console/tests/Microsoft.Extensions.Logging.Console.Tests/Microsoft.Extensions.Logging.Console.Tests.csproj b/src/libraries/Microsoft.Extensions.Logging.Console/tests/Microsoft.Extensions.Logging.Console.Tests/Microsoft.Extensions.Logging.Console.Tests.csproj index 2beeab918e6969..6c3acbcaeb4f43 100644 --- a/src/libraries/Microsoft.Extensions.Logging.Console/tests/Microsoft.Extensions.Logging.Console.Tests/Microsoft.Extensions.Logging.Console.Tests.csproj +++ b/src/libraries/Microsoft.Extensions.Logging.Console/tests/Microsoft.Extensions.Logging.Console.Tests/Microsoft.Extensions.Logging.Console.Tests.csproj @@ -10,6 +10,6 @@ - + diff --git a/src/libraries/Microsoft.NET.WebAssembly.Threading/src/CompatibilitySuppressions.xml b/src/libraries/Microsoft.NET.WebAssembly.Threading/src/CompatibilitySuppressions.xml deleted file mode 100644 index 8af156c8764265..00000000000000 --- a/src/libraries/Microsoft.NET.WebAssembly.Threading/src/CompatibilitySuppressions.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - PKV006 - net8.0 - - \ No newline at end of file diff --git a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/ActivitySource.cs b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/ActivitySource.cs index ebaddab4ec80cc..f82e54e65d5b5e 100644 --- a/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/ActivitySource.cs +++ b/src/libraries/System.Diagnostics.DiagnosticSource/src/System/Diagnostics/ActivitySource.cs @@ -407,105 +407,94 @@ internal void NotifyActivityAddException(Activity activity, Exception exception, } } - // SynchronizedList is a helper collection which ensure thread safety on the collection - // and allow enumerating the collection items and execute some action on the enumerated item and can detect any change in the collection - // during the enumeration which force restarting the enumeration again. - // Caution: We can have the action executed on the same item more than once which is ok in our scenarios. + // This class uses a copy-on-write design to ensure thread safety all operations are thread safe. + // However, it is possible for read-only operations to see stale versions of the item while a change + // is occurring. internal sealed class SynchronizedList { - private readonly List _list; - private uint _version; - - public SynchronizedList() => _list = new List(); + private readonly object _writeLock; + // This array must not be mutated directly. To mutate, obtain the lock, copy the array and then replace it with the new array. + private T[] _volatileArray; + public SynchronizedList() + { + _volatileArray = []; + _writeLock = new(); + } public void Add(T item) { - lock (_list) + lock (_writeLock) { - _list.Add(item); - _version++; + T[] newArray = new T[_volatileArray.Length + 1]; + + Array.Copy(_volatileArray, newArray, _volatileArray.Length);// copy existing items + newArray[_volatileArray.Length] = item;// copy new item + + _volatileArray = newArray; } } public bool AddIfNotExist(T item) { - lock (_list) + lock (_writeLock) { - if (!_list.Contains(item)) + int index = Array.IndexOf(_volatileArray, item); + + if (index >= 0) { - _list.Add(item); - _version++; - return true; + return false; } - return false; + + T[] newArray = new T[_volatileArray.Length + 1]; + + Array.Copy(_volatileArray, newArray, _volatileArray.Length);// copy existing items + newArray[_volatileArray.Length] = item;// copy new item + + _volatileArray = newArray; + + return true; } } public bool Remove(T item) { - lock (_list) + lock (_writeLock) { - if (_list.Remove(item)) + int index = Array.IndexOf(_volatileArray, item); + + if (index < 0) { - _version++; - return true; + return false; } - return false; + + T[] newArray = new T[_volatileArray.Length - 1]; + + Array.Copy(_volatileArray, newArray, index);// copy existing items before index + + Array.Copy( + _volatileArray, index + 1, // position after the index, skipping it + newArray, index, _volatileArray.Length - index - 1// remaining items accounting for removed item + ); + + _volatileArray = newArray; + return true; } } - public int Count => _list.Count; + public int Count => _volatileArray.Length; public void EnumWithFunc(ActivitySource.Function func, ref ActivityCreationOptions data, ref ActivitySamplingResult samplingResult, ref ActivityCreationOptions dataWithContext) { - uint version = _version; - int index = 0; - - while (index < _list.Count) + foreach (T item in _volatileArray) { - T item; - lock (_list) - { - if (version != _version) - { - version = _version; - index = 0; - continue; - } - - item = _list[index]; - index++; - } - - // Important to call the func outside the lock. - // This is the whole point we are having this wrapper class. func(item, ref data, ref samplingResult, ref dataWithContext); } } public void EnumWithAction(Action action, object arg) { - uint version = _version; - int index = 0; - - while (index < _list.Count) + foreach (T item in _volatileArray) { - T item; - lock (_list) - { - if (version != _version) - { - version = _version; - index = 0; - continue; - } - - item = _list[index]; - index++; - } - - // Important to call the action outside the lock. - // This is the whole point we are having this wrapper class. action(item, arg); } } @@ -517,27 +506,8 @@ public void EnumWithExceptionNotification(Activity activity, Exception exception return; } - uint version = _version; - int index = 0; - - while (index < _list.Count) + foreach (T item in _volatileArray) { - T item; - lock (_list) - { - if (version != _version) - { - version = _version; - index = 0; - continue; - } - - item = _list[index]; - index++; - } - - // Important to notify outside the lock. - // This is the whole point we are having this wrapper class. (item as ActivityListener)!.ExceptionRecorder?.Invoke(activity, exception, ref tags); } } diff --git a/src/libraries/System.Numerics.Tensors/src/System/Numerics/Tensors/netcore/TensorPrimitives.MinNumber.cs b/src/libraries/System.Numerics.Tensors/src/System/Numerics/Tensors/netcore/TensorPrimitives.MinNumber.cs index 653e8c7383eae6..8383efdebb884b 100644 --- a/src/libraries/System.Numerics.Tensors/src/System/Numerics/Tensors/netcore/TensorPrimitives.MinNumber.cs +++ b/src/libraries/System.Numerics.Tensors/src/System/Numerics/Tensors/netcore/TensorPrimitives.MinNumber.cs @@ -11,13 +11,13 @@ namespace System.Numerics.Tensors { public static partial class TensorPrimitives { - /// Searches for the largest number in the specified tensor. + /// Searches for the smallest number in the specified tensor. /// The tensor, represented as a span. - /// The maximum element in . + /// The minimum element in . /// Length of must be greater than zero. /// /// - /// The determination of the maximum element matches the IEEE 754:2019 `maximumNumber` function. Positive 0 is considered greater than negative 0. + /// The determination of the minimum element matches the IEEE 754:2019 `minimumNumber` function. Positive 0 is considered greater than negative 0. /// /// /// This method may call into the underlying C runtime or employ instructions specific to the current architecture. Exact results may differ between different @@ -28,7 +28,7 @@ public static T MinNumber(ReadOnlySpan x) where T : INumber => MinMaxCore>(x); - /// Computes the element-wise maximum of the numbers in the specified tensors. + /// Computes the element-wise minimum of the numbers in the specified tensors. /// The first tensor, represented as a span. /// The second tensor, represented as a span. /// The destination tensor, represented as a span. @@ -41,7 +41,7 @@ public static T MinNumber(ReadOnlySpan x) /// This method effectively computes [i] = .MinNumber([i], [i]). /// /// - /// The determination of the maximum element matches the IEEE 754:2019 `maximumNumber` function. If either value is + /// The determination of the minimum element matches the IEEE 754:2019 `minimumNumber` function. If either value is /// the other is returned. Positive 0 is considered greater than negative 0. /// /// @@ -53,7 +53,7 @@ public static void MinNumber(ReadOnlySpan x, ReadOnlySpan y, Span de where T : INumber => InvokeSpanSpanIntoSpan>(x, y, destination); - /// Computes the element-wise maximum of the numbers in the specified tensors. + /// Computes the element-wise minimum of the numbers in the specified tensors. /// The first tensor, represented as a span. /// The second tensor, represented as a scalar. /// The destination tensor, represented as a span. @@ -64,7 +64,7 @@ public static void MinNumber(ReadOnlySpan x, ReadOnlySpan y, Span de /// This method effectively computes [i] = .MinNumber([i], ). /// /// - /// The determination of the maximum element matches the IEEE 754:2019 `maximumNumber` function. If either value is + /// The determination of the minimum element matches the IEEE 754:2019 `minimumNumber` function. If either value is /// the other is returned. Positive 0 is considered greater than negative 0. /// /// diff --git a/src/libraries/System.Numerics.Tensors/src/System/Numerics/Tensors/netcore/TensorPrimitives.Reciprocal.cs b/src/libraries/System.Numerics.Tensors/src/System/Numerics/Tensors/netcore/TensorPrimitives.Reciprocal.cs index 16d0df26157cb2..2c348a4cd28d92 100644 --- a/src/libraries/System.Numerics.Tensors/src/System/Numerics/Tensors/netcore/TensorPrimitives.Reciprocal.cs +++ b/src/libraries/System.Numerics.Tensors/src/System/Numerics/Tensors/netcore/TensorPrimitives.Reciprocal.cs @@ -47,7 +47,7 @@ public static void ReciprocalEstimate(ReadOnlySpan x, Span destination) /// is an integer type and an element in is equal to zero. /// /// - /// This method effectively computes [i] = 1 / [i]. + /// This method effectively computes [i] = 1 / T.Sqrt([i]). /// /// public static void ReciprocalSqrt(ReadOnlySpan x, Span destination) @@ -62,7 +62,7 @@ public static void ReciprocalSqrt(ReadOnlySpan x, Span destination) /// is an integer type and an element in is equal to zero. /// /// - /// This method effectively computes [i] = 1 / [i]. + /// This method effectively computes [i] = 1 / T.Sqrt([i]). /// /// public static void ReciprocalSqrtEstimate(ReadOnlySpan x, Span destination) diff --git a/src/libraries/System.Numerics.Vectors/tests/Matrix4x4Tests.cs b/src/libraries/System.Numerics.Vectors/tests/Matrix4x4Tests.cs index 80877852d6378d..2107bcf184f8d9 100644 --- a/src/libraries/System.Numerics.Vectors/tests/Matrix4x4Tests.cs +++ b/src/libraries/System.Numerics.Vectors/tests/Matrix4x4Tests.cs @@ -819,11 +819,38 @@ public void Matrix4x4CreateReflectionTest01() Vector3 v = point - pp; float d = Vector3.Dot(v, plane.Normal); Vector3 vp = point - 2.0f * d * plane.Normal; - Assert.True(MathHelper.Equal(rp, vp), "Matrix4x4.Reflection did not provide expected value."); + Assert.True(MathHelper.Equal(rp, vp), "Matrix4x4.CreateReflection did not provide expected value."); } } } + [Fact] + public void Matrix4x4CreateReflectionTest02() + { + Plane plane = new Plane(0, 1, 0, 60); + Matrix4x4 actual = Matrix4x4.CreateReflection(plane); + + AssertExtensions.Equal(1.0f, actual.M11, 0.0f); + AssertExtensions.Equal(0.0f, actual.M12, 0.0f); + AssertExtensions.Equal(0.0f, actual.M13, 0.0f); + AssertExtensions.Equal(0.0f, actual.M14, 0.0f); + + AssertExtensions.Equal(0.0f, actual.M21, 0.0f); + AssertExtensions.Equal(-1.0f, actual.M22, 0.0f); + AssertExtensions.Equal(0.0f, actual.M23, 0.0f); + AssertExtensions.Equal(0.0f, actual.M24, 0.0f); + + AssertExtensions.Equal(0.0f, actual.M31, 0.0f); + AssertExtensions.Equal(0.0f, actual.M32, 0.0f); + AssertExtensions.Equal(1.0f, actual.M33, 0.0f); + AssertExtensions.Equal(0.0f, actual.M34, 0.0f); + + AssertExtensions.Equal(0.0f, actual.M41, 0.0f); + AssertExtensions.Equal(-120.0f, actual.M42, 0.0f); + AssertExtensions.Equal(0.0f, actual.M43, 0.0f); + AssertExtensions.Equal(1.0f, actual.M44, 0.0f); + } + // A test for CreateRotationZ (float) [Fact] public void Matrix4x4CreateRotationZTest() diff --git a/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix4x4.Impl.cs b/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix4x4.Impl.cs index 3a489f0fc1af0a..889311ca073028 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix4x4.Impl.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Numerics/Matrix4x4.Impl.cs @@ -620,7 +620,7 @@ public static Impl CreateReflection(in Plane value) // https://github.com/microsoft/DirectXMath/blob/master/Inc/DirectXMathMatrix.inl Vector4 p = Plane.Normalize(value).AsVector4(); - Vector4 s = p * -2.0f; + Vector4 s = p * Vector4.Create(-2.0f, -2.0f, -2.0f, 0.0f); Impl result; diff --git a/src/libraries/System.Private.CoreLib/src/System/Threading/Tasks/Task.cs b/src/libraries/System.Private.CoreLib/src/System/Threading/Tasks/Task.cs index 56d8acf0cd8ff4..f265970b506799 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Threading/Tasks/Task.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Threading/Tasks/Task.cs @@ -3056,6 +3056,27 @@ private bool SpinThenBlockingWait(int millisecondsTimeout, CancellationToken can bool returnValue = SpinWait(millisecondsTimeout); if (!returnValue) { +#if CORECLR + if (ThreadPoolWorkQueue.s_prioritizationExperiment) + { + // We're about to block waiting for the task to complete, which is expensive, and if + // the task being waited on depends on some other work to run, this thread could end up + // waiting for some other thread to do work. If the two threads are part of the same scheduler, + // such as the thread pool, that could lead to a (temporary) deadlock. This is made worse by + // it also leading to a possible priority inversion on previously queued work. Each thread in + // the thread pool has a local queue. A key motivator for this local queue is it allows this + // thread to create work items that it will then prioritize above all other work in the + // pool. However, while this thread makes its own local queue the top priority, that queue is + // every other thread's lowest priority. If this thread blocks, all of its created work that's + // supposed to be high priority becomes low priority, and work that's typically part of a + // currently in-flight operation gets deprioritized relative to new requests coming into the + // pool, which can lead to the whole system slowing down or even deadlocking. To address that, + // just before we block, we move all local work into a global queue, so that it's at least + // prioritized by other threads more fairly with respect to other work. + ThreadPoolWorkQueue.TransferAllLocalWorkItemsToHighPriorityGlobalQueue(); + } +#endif + var mres = new SetOnInvokeMres(); try { diff --git a/src/libraries/System.Private.CoreLib/src/System/Threading/ThreadPoolWorkQueue.cs b/src/libraries/System.Private.CoreLib/src/System/Threading/ThreadPoolWorkQueue.cs index bc0fe4556bb311..6fa669046a1f06 100644 --- a/src/libraries/System.Private.CoreLib/src/System/Threading/ThreadPoolWorkQueue.cs +++ b/src/libraries/System.Private.CoreLib/src/System/Threading/ThreadPoolWorkQueue.cs @@ -701,6 +701,27 @@ public void EnqueueAtHighPriority(object workItem) EnsureThreadRequested(); } + internal static void TransferAllLocalWorkItemsToHighPriorityGlobalQueue() + { + // If there's no local queue, there's nothing to transfer. + if (ThreadPoolWorkQueueThreadLocals.threadLocals is not ThreadPoolWorkQueueThreadLocals tl) + { + return; + } + + // Pop each work item off the local queue and push it onto the global. This is a + // bounded loop as no other thread is allowed to push into this thread's queue. + ThreadPoolWorkQueue queue = ThreadPool.s_workQueue; + while (tl.workStealingQueue.LocalPop() is object workItem) + { + queue.highPriorityWorkItems.Enqueue(workItem); + } + + Volatile.Write(ref queue._mayHaveHighPriorityWorkItems, true); + + queue.EnsureThreadRequested(); + } + internal static bool LocalFindAndPop(object callback) { ThreadPoolWorkQueueThreadLocals? tl = ThreadPoolWorkQueueThreadLocals.threadLocals; diff --git a/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigInteger.cs b/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigInteger.cs index e4d8845dd05e81..b3355ff68678ca 100644 --- a/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigInteger.cs +++ b/src/libraries/System.Runtime.Numerics/src/System/Numerics/BigInteger.cs @@ -544,9 +544,9 @@ private BigInteger(Span value) isNegative = true; length = value.LastIndexOfAnyExcept(uint.MaxValue) + 1; - if ((length == 0) || ((int)value[length - 1] > 0)) + if ((length == 0) || ((int)value[length - 1] >= 0)) { - // We ne need to preserve the sign bit + // We need to preserve the sign bit length++; } Debug.Assert((int)value[length - 1] < 0); diff --git a/src/libraries/System.Runtime.Numerics/tests/BigInteger/MyBigInt.cs b/src/libraries/System.Runtime.Numerics/tests/BigInteger/MyBigInt.cs index cd4a578fab910e..58d4afdc819f71 100644 --- a/src/libraries/System.Runtime.Numerics/tests/BigInteger/MyBigInt.cs +++ b/src/libraries/System.Runtime.Numerics/tests/BigInteger/MyBigInt.cs @@ -877,6 +877,11 @@ public static List GetBytes(BitArray ba) } public static string Print(byte[] bytes) + { + return Print(bytes.AsSpan()); + } + + public static string Print(ReadOnlySpan bytes) { string ret = "make "; diff --git a/src/libraries/System.Runtime.Numerics/tests/BigInteger/SampleGeneration.cs b/src/libraries/System.Runtime.Numerics/tests/BigInteger/SampleGeneration.cs new file mode 100644 index 00000000000000..7d778be2141f8a --- /dev/null +++ b/src/libraries/System.Runtime.Numerics/tests/BigInteger/SampleGeneration.cs @@ -0,0 +1,81 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System; +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace System.Numerics.Tests +{ + public static partial class SampleGeneration + { + public static IEnumerable> EnumerateSequence(IEnumerable elementSource, int minLength, int maxLengthExclusive) + { + return EnumerateSequence(elementSource.ToArray(), minLength, maxLengthExclusive); + } + + public static IEnumerable> EnumerateSequence(T[] elementSource, int minLength, int maxLengthExclusive) + { + for (var i = minLength; maxLengthExclusive > i; ++i) + { + foreach (var item in EnumerateSequence(elementSource, i)) + { + yield return item; + } + } + } + + public static IEnumerable> EnumerateSequence(IEnumerable elementSource, int length) + { + return EnumerateSequence(elementSource.ToArray(), length); + } + + public static IEnumerable> EnumerateSequence(T[] elementSource, int length) + { + var a = new T[length]; + var r = new ReadOnlyMemory(a); + foreach (var _ in EnumerateSequenceYieldsCurrentCount(elementSource, a)) + { + yield return r; + } + } + + private static IEnumerable EnumerateSequenceYieldsCurrentCount(T[] elementSource, T[] buffer) + { + var c = 0L; + var b = elementSource.Length; + if (b != 0) + { + var stack = new int[buffer.Length]; + for (var i = 0; i < buffer.Length; ++i) + { + buffer[i] = elementSource[0]; + } + { + L:; + yield return c++; + for (var i = 0; stack.Length != i; ++i) + { + var en = ++stack[i]; + if (b == en) + { + } + else + { + buffer[i] = elementSource[en]; + for (; 0 <= --i;) + { + buffer[i] = elementSource[0]; + stack[i] = 0; + } + goto L; + } + } + } + } + } + } +} diff --git a/src/libraries/System.Runtime.Numerics/tests/BigInteger/UInt32Samples.cs b/src/libraries/System.Runtime.Numerics/tests/BigInteger/UInt32Samples.cs new file mode 100644 index 00000000000000..658c68ae2c9811 --- /dev/null +++ b/src/libraries/System.Runtime.Numerics/tests/BigInteger/UInt32Samples.cs @@ -0,0 +1,138 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Collections.Generic; +using System.Collections.ObjectModel; +using System.Linq; +using Xunit; + +namespace System.Numerics.Tests +{ + + public static partial class UInt32Samples + { + private static readonly uint[] set1 = new uint[] { + 0B00000000000000000000000000000000U, + 0B00000000000000000000000000000001U, + 0B00111111111111111111111111111110U, + 0B00111111111111111111111111111111U, + + 0B01000000000000000000000000000000U, + 0B01000000000000000000000000000001U, + 0B01111111111111111111111111111110U, + 0B01111111111111111111111111111111U, + + 0B10000000000000000000000000000000U, + 0B10000000000000000000000000000001U, + 0B10111111111111111111111111111110U, + 0B10111111111111111111111111111111U, + + 0B11000000000000000000000000000000U, + 0B11000000000000000000000000000001U, + 0B11111111111111111111111111111110U, + 0B11111111111111111111111111111111U, + }; + + private static IEnumerable GetSet1() + { + foreach (var item in set1) + { + yield return item; + } + } + + public static readonly IEnumerable Set1 = GetSet1(); + + private static readonly uint[] set2 = new uint[] { + 0B00000000000000000000000000000000U, + 0B00000000000000000000000000000001U, + 0B00000000000000000100000000000000U, + 0B00000000000000000100000000000001U, + + 0B00000000000000010000000000000000U, + 0B00000000000000010000000000000001U, + 0B00000000000000010100000000000000U, + 0B00000000000000010100000000000001U, + + 0B00111111111111111111111111111110U, + 0B00111111111111111111111111111111U, + 0B00111111111111111011111111111110U, + 0B00111111111111111011111111111111U, + + 0B00111111111111101111111111111110U, + 0B00111111111111101111111111111111U, + 0B00111111111111101011111111111110U, + 0B00111111111111101011111111111111U, + + 0B01000000000000000000000000000000U, + 0B01000000000000000000000000000001U, + 0B01000000000000000100000000000000U, + 0B01000000000000000100000000000001U, + + 0B01000000000000010000000000000000U, + 0B01000000000000010000000000000001U, + 0B01000000000000010100000000000000U, + 0B01000000000000010100000000000001U, + + 0B01111111111111111111111111111110U, + 0B01111111111111111111111111111111U, + 0B01111111111111111011111111111110U, + 0B01111111111111111011111111111111U, + + 0B01111111111111101111111111111110U, + 0B01111111111111101111111111111111U, + 0B01111111111111101011111111111110U, + 0B01111111111111101011111111111111U, + + 0B10000000000000000000000000000000U, + 0B10000000000000000000000000000001U, + 0B10000000000000000100000000000000U, + 0B10000000000000000100000000000001U, + + 0B10000000000000010000000000000000U, + 0B10000000000000010000000000000001U, + 0B10000000000000010100000000000000U, + 0B10000000000000010100000000000001U, + + 0B10111111111111111111111111111110U, + 0B10111111111111111111111111111111U, + 0B10111111111111111011111111111110U, + 0B10111111111111111011111111111111U, + + 0B10111111111111101111111111111110U, + 0B10111111111111101111111111111111U, + 0B10111111111111101011111111111110U, + 0B10111111111111101011111111111111U, + + 0B11000000000000000000000000000000U, + 0B11000000000000000000000000000001U, + 0B11000000000000000100000000000000U, + 0B11000000000000000100000000000001U, + + 0B11000000000000010000000000000000U, + 0B11000000000000010000000000000001U, + 0B11000000000000010100000000000000U, + 0B11000000000000010100000000000001U, + + 0B11111111111111111111111111111110U, + 0B11111111111111111111111111111111U, + 0B11111111111111111011111111111110U, + 0B11111111111111111011111111111111U, + + 0B11111111111111101111111111111110U, + 0B11111111111111101111111111111111U, + 0B11111111111111101011111111111110U, + 0B11111111111111101011111111111111U, + }; + + private static IEnumerable GetSet2() + { + foreach (var item in set2) + { + yield return item; + } + } + + public static readonly IEnumerable Set2 = GetSet2(); + } +} diff --git a/src/libraries/System.Runtime.Numerics/tests/BigInteger/op_and.cs b/src/libraries/System.Runtime.Numerics/tests/BigInteger/op_and.cs index ed25708e2d0c6d..235d75d44d7c92 100644 --- a/src/libraries/System.Runtime.Numerics/tests/BigInteger/op_and.cs +++ b/src/libraries/System.Runtime.Numerics/tests/BigInteger/op_and.cs @@ -1,6 +1,9 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. +using System.Collections.Generic; +using System.Linq; +using System.Runtime.InteropServices; using Xunit; namespace System.Numerics.Tests @@ -117,6 +120,42 @@ public static void RunAndTests() } } + [Fact] + public void Issue109669() + { + // Operations on numbers whose result is of the form 0xFFFFFFFF 00000000 ... 00000000 + // in two's complement. + + Assert.Equal(-4294967296, new BigInteger(-4294967296) & new BigInteger(-1919810)); + Assert.Equal(-4294967296, new BigInteger(-4042322161) & new BigInteger(-252645136)); + Assert.Equal(-4294967296, new BigInteger(-8589934592) | new BigInteger(-21474836480)); + + BigInteger a = new BigInteger(MemoryMarshal.AsBytes([uint.MaxValue, 0u, 0u]), isBigEndian: true); + Assert.Equal(a, a & a); + Assert.Equal(a, a | a); + Assert.Equal(a, a ^ 0); + } + + [Fact] + public static void RunAndTestsForSampleSet1() + { + var s = SampleGeneration.EnumerateSequence(UInt32Samples.Set1, 2); + var t = SampleGeneration.EnumerateSequence(UInt32Samples.Set1, 2); + + foreach (var i in s) + { + foreach (var j in t) + { + var a = MemoryMarshal.AsBytes(i.Span); + var b = MemoryMarshal.AsBytes(j.Span); + + VerifyAndString(Print(a) + Print(b) + "b&"); + + VerifyAndString(Print(b) + Print(a) + "b&"); + } + } + } + private static void VerifyAndString(string opstring) { StackCalc sc = new StackCalc(opstring); @@ -139,5 +178,10 @@ private static string Print(byte[] bytes) { return MyBigIntImp.Print(bytes); } + + private static string Print(ReadOnlySpan bytes) + { + return MyBigIntImp.Print(bytes); + } } } diff --git a/src/libraries/System.Runtime.Numerics/tests/System.Runtime.Numerics.Tests.csproj b/src/libraries/System.Runtime.Numerics/tests/System.Runtime.Numerics.Tests.csproj index 8e2c0ce29543bb..4224f0ac83414f 100644 --- a/src/libraries/System.Runtime.Numerics/tests/System.Runtime.Numerics.Tests.csproj +++ b/src/libraries/System.Runtime.Numerics/tests/System.Runtime.Numerics.Tests.csproj @@ -48,10 +48,12 @@ + + diff --git a/src/libraries/System.Security.Cryptography/tests/System.Security.Cryptography.Tests.csproj b/src/libraries/System.Security.Cryptography/tests/System.Security.Cryptography.Tests.csproj index 13cda33052457e..9ec855e32bd341 100644 --- a/src/libraries/System.Security.Cryptography/tests/System.Security.Cryptography.Tests.csproj +++ b/src/libraries/System.Security.Cryptography/tests/System.Security.Cryptography.Tests.csproj @@ -513,7 +513,8 @@ Link="Common\Interop\Windows\Crypt32\Interop.MsgEncodingType.cs" /> - + + diff --git a/src/libraries/System.Security.Cryptography/tests/X509Certificates/X509FilesystemTests.Windows.cs b/src/libraries/System.Security.Cryptography/tests/X509Certificates/X509FilesystemTests.Windows.cs new file mode 100644 index 00000000000000..463dded0ba5b37 --- /dev/null +++ b/src/libraries/System.Security.Cryptography/tests/X509Certificates/X509FilesystemTests.Windows.cs @@ -0,0 +1,532 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.CompilerServices; +using System.Security.Cryptography.Pkcs; +using System.Security.Principal; +using System.Threading; +using Test.Cryptography; +using Xunit; + +namespace System.Security.Cryptography.X509Certificates.Tests +{ + [Collection("X509Filesystem")] + public static class X509FilesystemTests + { + // Microsoft Strong Cryptographic Provider + private static readonly AsnEncodedData s_capiCsp = new AsnEncodedData( + new Oid("1.3.6.1.4.1.311.17.1", null), + ( + "1E4E004D006900630072006F0073006F006600740020005300740072006F006E" + + "0067002000430072007900700074006F00670072006100700068006900630020" + + "00500072006F00760069006400650072" + ).HexToByteArray()); + + private static readonly AsnEncodedData s_machineKey = new AsnEncodedData( + new Oid("1.3.6.1.4.1.311.17.2", null), + [0x05, 0x00]); + + private static readonly Pkcs12LoaderLimits s_cspPreservingLimits = new Pkcs12LoaderLimits + { + PreserveStorageProvider = true, + }; + + // 6 random keys that will used across all of the tests in this file + private const int KeyGenKeySize = 2048; + private static readonly RSA[] s_keys = + { + RSA.Create(KeyGenKeySize), RSA.Create(KeyGenKeySize), RSA.Create(KeyGenKeySize), + RSA.Create(KeyGenKeySize), RSA.Create(KeyGenKeySize), RSA.Create(KeyGenKeySize), + }; + + [Theory] + [InlineData(X509KeyStorageFlags.DefaultKeySet)] + [InlineData(X509KeyStorageFlags.DefaultKeySet, true)] + [InlineData(X509KeyStorageFlags.UserKeySet)] + [InlineData(X509KeyStorageFlags.UserKeySet, true)] + [InlineData(X509KeyStorageFlags.MachineKeySet)] + [InlineData(X509KeyStorageFlags.MachineKeySet, true)] + public static void AllFilesDeleted_MultiplePrivateKey_Ctor(X509KeyStorageFlags storageFlags, bool capi = false) + { + AllFilesDeletedTest( + storageFlags, + capi, + multiPrivate: true, + static (bytes, pwd, flags) => new X509Certificate2(bytes, pwd, flags)); + } + + [Theory] + [InlineData(X509KeyStorageFlags.DefaultKeySet)] + [InlineData(X509KeyStorageFlags.DefaultKeySet, true)] + [InlineData(X509KeyStorageFlags.UserKeySet)] + [InlineData(X509KeyStorageFlags.UserKeySet, true)] + [InlineData(X509KeyStorageFlags.MachineKeySet)] + [InlineData(X509KeyStorageFlags.MachineKeySet, true)] + public static void AllFilesDeleted_SinglePrivateKey_Ctor(X509KeyStorageFlags storageFlags, bool capi = false) + { + AllFilesDeletedTest( + storageFlags, + capi, + multiPrivate: false, + static (bytes, pwd, flags) => new X509Certificate2(bytes, pwd, flags)); + } + + [Theory] + [InlineData(X509KeyStorageFlags.DefaultKeySet)] + [InlineData(X509KeyStorageFlags.DefaultKeySet, true)] + [InlineData(X509KeyStorageFlags.UserKeySet)] + [InlineData(X509KeyStorageFlags.UserKeySet, true)] + [InlineData(X509KeyStorageFlags.MachineKeySet)] + [InlineData(X509KeyStorageFlags.MachineKeySet, true)] + public static void AllFilesDeleted_MultiplePrivateKey_CollImport(X509KeyStorageFlags storageFlags, bool capi = false) + { + AllFilesDeletedTest( + storageFlags, + capi, + multiPrivate: true, + Cert.Import); + } + + [Theory] + [InlineData(X509KeyStorageFlags.DefaultKeySet)] + [InlineData(X509KeyStorageFlags.DefaultKeySet, true)] + [InlineData(X509KeyStorageFlags.UserKeySet)] + [InlineData(X509KeyStorageFlags.UserKeySet, true)] + [InlineData(X509KeyStorageFlags.MachineKeySet)] + [InlineData(X509KeyStorageFlags.MachineKeySet, true)] + public static void AllFilesDeleted_SinglePrivateKey_CollImport(X509KeyStorageFlags storageFlags, bool capi = false) + { + AllFilesDeletedTest( + storageFlags, + capi, + multiPrivate: false, + Cert.Import); + } + + [Theory] + [InlineData(X509KeyStorageFlags.DefaultKeySet)] + [InlineData(X509KeyStorageFlags.DefaultKeySet, true)] + [InlineData(X509KeyStorageFlags.UserKeySet)] + [InlineData(X509KeyStorageFlags.UserKeySet, true)] + [InlineData(X509KeyStorageFlags.MachineKeySet)] + [InlineData(X509KeyStorageFlags.MachineKeySet, true)] + public static void AllFilesDeleted_MultiplePrivateKey_SingleLoader(X509KeyStorageFlags storageFlags, bool capi = false) + { + AllFilesDeletedTest( + storageFlags, + capi, + multiPrivate: true, + static (bytes, pwd, flags) => X509CertificateLoader.LoadPkcs12(bytes, pwd, flags)); + } + + [Theory] + [InlineData(X509KeyStorageFlags.DefaultKeySet)] + [InlineData(X509KeyStorageFlags.DefaultKeySet, true)] + [InlineData(X509KeyStorageFlags.UserKeySet)] + [InlineData(X509KeyStorageFlags.UserKeySet, true)] + [InlineData(X509KeyStorageFlags.MachineKeySet)] + [InlineData(X509KeyStorageFlags.MachineKeySet, true)] + public static void AllFilesDeleted_SinglePrivateKey_SingleLoader(X509KeyStorageFlags storageFlags, bool capi = false) + { + AllFilesDeletedTest( + storageFlags, + capi, + multiPrivate: false, + static (bytes, pwd, flags) => X509CertificateLoader.LoadPkcs12(bytes, pwd, flags)); + } + + [Theory] + [InlineData(X509KeyStorageFlags.DefaultKeySet)] + [InlineData(X509KeyStorageFlags.DefaultKeySet, true)] + [InlineData(X509KeyStorageFlags.UserKeySet)] + [InlineData(X509KeyStorageFlags.UserKeySet, true)] + [InlineData(X509KeyStorageFlags.MachineKeySet)] + [InlineData(X509KeyStorageFlags.MachineKeySet, true)] + public static void AllFilesDeleted_MultiplePrivateKey_CollLoader(X509KeyStorageFlags storageFlags, bool capi = false) + { + AllFilesDeletedTest( + storageFlags, + capi, + multiPrivate: true, + static (bytes, pwd, flags) => new ImportedCollection( + X509CertificateLoader.LoadPkcs12Collection(bytes, pwd, flags))); + } + + [Theory] + [InlineData(X509KeyStorageFlags.DefaultKeySet)] + [InlineData(X509KeyStorageFlags.DefaultKeySet, true)] + [InlineData(X509KeyStorageFlags.UserKeySet)] + [InlineData(X509KeyStorageFlags.UserKeySet, true)] + [InlineData(X509KeyStorageFlags.MachineKeySet)] + [InlineData(X509KeyStorageFlags.MachineKeySet, true)] + public static void AllFilesDeleted_SinglePrivateKey_CollLoader(X509KeyStorageFlags storageFlags, bool capi = false) + { + AllFilesDeletedTest( + storageFlags, + capi, + multiPrivate: false, + static (bytes, pwd, flags) => new ImportedCollection( + X509CertificateLoader.LoadPkcs12Collection(bytes, pwd, flags))); + } + + [Theory] + [InlineData(X509KeyStorageFlags.DefaultKeySet)] + [InlineData(X509KeyStorageFlags.DefaultKeySet, true)] + [InlineData(X509KeyStorageFlags.UserKeySet)] + [InlineData(X509KeyStorageFlags.UserKeySet, true)] + [InlineData(X509KeyStorageFlags.MachineKeySet)] + [InlineData(X509KeyStorageFlags.MachineKeySet, true)] + public static void AllFilesDeleted_MultiplePrivateKey_SingleLoader_KeepCsp(X509KeyStorageFlags storageFlags, bool capi = false) + { + AllFilesDeletedTest( + storageFlags, + capi, + multiPrivate: true, + static (bytes, pwd, flags) => + X509CertificateLoader.LoadPkcs12(bytes, pwd, flags, s_cspPreservingLimits)); + } + + [Theory] + [InlineData(X509KeyStorageFlags.DefaultKeySet)] + [InlineData(X509KeyStorageFlags.DefaultKeySet, true)] + [InlineData(X509KeyStorageFlags.UserKeySet)] + [InlineData(X509KeyStorageFlags.UserKeySet, true)] + [InlineData(X509KeyStorageFlags.MachineKeySet)] + [InlineData(X509KeyStorageFlags.MachineKeySet, true)] + public static void AllFilesDeleted_SinglePrivateKey_SingleLoader_KeepCsp(X509KeyStorageFlags storageFlags, bool capi = false) + { + AllFilesDeletedTest( + storageFlags, + capi, + multiPrivate: false, + static (bytes, pwd, flags) => + X509CertificateLoader.LoadPkcs12(bytes, pwd, flags, s_cspPreservingLimits)); + } + + [Theory] + [InlineData(X509KeyStorageFlags.DefaultKeySet)] + [InlineData(X509KeyStorageFlags.DefaultKeySet, true)] + [InlineData(X509KeyStorageFlags.UserKeySet)] + [InlineData(X509KeyStorageFlags.UserKeySet, true)] + [InlineData(X509KeyStorageFlags.MachineKeySet)] + [InlineData(X509KeyStorageFlags.MachineKeySet, true)] + public static void AllFilesDeleted_MultiplePrivateKey_CollLoader_KeepCsp(X509KeyStorageFlags storageFlags, bool capi = false) + { + AllFilesDeletedTest( + storageFlags, + capi, + multiPrivate: true, + static (bytes, pwd, flags) => new ImportedCollection( + X509CertificateLoader.LoadPkcs12Collection(bytes, pwd, flags, s_cspPreservingLimits))); + } + + [Theory] + [InlineData(X509KeyStorageFlags.DefaultKeySet)] + [InlineData(X509KeyStorageFlags.DefaultKeySet, true)] + [InlineData(X509KeyStorageFlags.UserKeySet)] + [InlineData(X509KeyStorageFlags.UserKeySet, true)] + [InlineData(X509KeyStorageFlags.MachineKeySet)] + [InlineData(X509KeyStorageFlags.MachineKeySet, true)] + public static void AllFilesDeleted_SinglePrivateKey_CollLoader_KeepCsp(X509KeyStorageFlags storageFlags, bool capi = false) + { + AllFilesDeletedTest( + storageFlags, + capi, + multiPrivate: false, + static (bytes, pwd, flags) => new ImportedCollection( + X509CertificateLoader.LoadPkcs12Collection(bytes, pwd, flags, s_cspPreservingLimits))); + } + + private static void AllFilesDeletedTest( + X509KeyStorageFlags storageFlags, + bool capi, + bool multiPrivate, + Func importer, + [CallerMemberName] string? name = null) + { + const X509KeyStorageFlags NonDefaultKeySet = + X509KeyStorageFlags.UserKeySet | + X509KeyStorageFlags.MachineKeySet; + + bool defaultKeySet = (storageFlags & NonDefaultKeySet) == 0; + int certAndKeyCount = multiPrivate ? s_keys.Length : 1; + + byte[] pfx = MakePfx(certAndKeyCount, capi, name); + + EnsureNoKeysGained( + (Bytes: pfx, Flags: storageFlags, Importer: importer), + static state => state.Importer(state.Bytes, "", state.Flags)); + + // When importing for DefaultKeySet, try both 010101 and 101010 + // intermixing of machine and user keys so that single key import + // gets both a machine key and a user key. + if (defaultKeySet) + { + pfx = MakePfx(certAndKeyCount, capi, name, 1); + + EnsureNoKeysGained( + (Bytes: pfx, Flags: storageFlags, Importer: importer), + static state => state.Importer(state.Bytes, "", state.Flags)); + } + } + + private static byte[] MakePfx( + int certAndKeyCount, + bool capi, + [CallerMemberName] string? name = null, + int machineKeySkew = 0) + { + Pkcs12SafeContents keys = new Pkcs12SafeContents(); + Pkcs12SafeContents certs = new Pkcs12SafeContents(); + DateTimeOffset notBefore = DateTimeOffset.UtcNow.AddMinutes(-5); + DateTimeOffset notAfter = notBefore.AddMinutes(10); + + PbeParameters pbeParams = new PbeParameters( + PbeEncryptionAlgorithm.TripleDes3KeyPkcs12, + HashAlgorithmName.SHA1, + 1); + + Span indices = [0, 1, 2, 3, 4, 5]; + RandomNumberGenerator.Shuffle(indices); + + for (int i = 0; i < s_keys.Length; i++) + { + RSA key = s_keys[indices[i]]; + + CertificateRequest req = new CertificateRequest( + $"CN={name}.{i}", + key, + HashAlgorithmName.SHA256, + RSASignaturePadding.Pkcs1); + + using (X509Certificate2 cert = req.CreateSelfSigned(notBefore, notAfter)) + { + Pkcs12CertBag certBag = certs.AddCertificate(cert); + + if (i < certAndKeyCount) + { + Pkcs12ShroudedKeyBag keyBag = keys.AddShroudedKey(key, "", pbeParams); + + if (capi) + { + keyBag.Attributes.Add(s_capiCsp); + } + + if (int.IsEvenInteger(i + machineKeySkew)) + { + keyBag.Attributes.Add(s_machineKey); + } + + byte keyId = checked((byte)i); + Pkcs9LocalKeyId localKeyId = new Pkcs9LocalKeyId(new ReadOnlySpan(ref keyId)); + keyBag.Attributes.Add(localKeyId); + certBag.Attributes.Add(localKeyId); + } + } + } + + Pkcs12Builder builder = new Pkcs12Builder(); + builder.AddSafeContentsEncrypted(certs, "", pbeParams); + builder.AddSafeContentsUnencrypted(keys); + builder.SealWithMac("", HashAlgorithmName.SHA1, 1); + return builder.Encode(); + } + + private static void EnsureNoKeysGained(TState state, Func importer) + { + const int ERROR_ACCESS_DENIED = (unchecked((int)0x80010005)); + + // In the good old days, before we had threads or parallel processes, these tests would be easy: + // * Read the directory listing(s) + // * Import a thing + // * See what new things were added + // * Dispose the thing + // * See that the new things went away + // + // But, since files can be created by tests on other threads, or even by other processes, + // recheck the directory a few times (MicroRetryCount) after sleeping (SleepMs). + // + // Sadly, that's not sufficient, because an extra file gained during that window could itself + // be leaked, or be intentionally persisted beyond the recheck interval. So, instead of failing, + // try again from the beginning. If we get parallel leaked on MacroRetryCount times in a row + // we'll still false-fail, but unless a majority of the tests in the process are leaking keys, + // it's unlikely. + // + // Before changing these constants to bigger numbers, consider the combinatorics. Failure will + // sleep (MacroRetryCount * (MicroRetryCount - 1) * SleepMs) ms, and also involves non-zero work. + // Failing 29 tests at (3, 5, 1000) adds about 6 minutes to the test run compared to success. + + const int MacroRetryCount = 3; + const int MicroRetryCount = 5; + const int SleepMs = 1000; + + KeyPaths keyPaths = KeyPaths.GetKeyPaths(); + HashSet gainedFiles = null; + + for (int macro = 0; macro < MacroRetryCount; macro++) + { + List keysBefore = new(keyPaths.EnumerateAllKeys()); + + IDisposable imported = null; + + try + { + imported = importer(state); + } + catch (CryptographicException ex) when (ex.HResult == ERROR_ACCESS_DENIED) + { + } + + imported?.Dispose(); + + gainedFiles = new HashSet(keyPaths.EnumerateAllKeys()); + gainedFiles.ExceptWith(keysBefore); + + for (int micro = 0; micro < MicroRetryCount; micro++) + { + if (gainedFiles.Count == 0) + { + return; + } + + HashSet thisTry = new(keyPaths.EnumerateAllKeys()); + gainedFiles.IntersectWith(thisTry); + + if (gainedFiles.Count != 0 && micro < MicroRetryCount - 1) + { + Thread.Sleep(SleepMs); + } + } + } + + Assert.Empty(keyPaths.MapPaths(gainedFiles)); + } + + private sealed class KeyPaths + { + private static volatile KeyPaths s_instance; + + private string _capiUserDsa; + private string _capiUserRsa; + private string _capiMachineDsa; + private string _capiMachineRsa; + private string _cngUser; + private string _cngMachine; + + private KeyPaths() + { + } + + internal IEnumerable MapPaths(IEnumerable paths) + { + foreach (string path in paths) + { + yield return + Replace(path, _cngUser, "CNG-USER") ?? + Replace(path, _capiUserRsa, "CAPI-USER-RSA") ?? + Replace(path, _cngMachine, "CNG-MACH") ?? + Replace(path, _capiMachineRsa, "CAPI-MACH-RSA") ?? + Replace(path, _capiUserDsa, "CAPI-USER-DSS") ?? + Replace(path, _capiMachineDsa, "CAPI-MACH-DSS") ?? + path; + } + + static string Replace(string path, string prefix, string ifMatched) + { + if (path.StartsWith(prefix)) + { + return path.Replace(prefix, ifMatched); + } + + return null; + } + } + + internal IEnumerable EnumerateCapiUserKeys() + { + return EnumerateFiles(_capiUserRsa).Concat(EnumerateFiles(_capiUserDsa)); + } + + internal IEnumerable EnumerateCapiMachineKeys() + { + return EnumerateFiles(_capiMachineRsa).Concat(EnumerateFiles(_capiMachineDsa)); + } + + internal IEnumerable EnumerateCngUserKeys() + { + return EnumerateFiles(_cngUser); + } + + internal IEnumerable EnumerateCngMachineKeys() + { + return EnumerateFiles(_cngMachine); + } + + internal IEnumerable EnumerateUserKeys() + { + return EnumerateCapiUserKeys().Concat(EnumerateCngUserKeys()); + } + + internal IEnumerable EnumerateMachineKeys() + { + return EnumerateCapiMachineKeys().Concat(EnumerateCngMachineKeys()); + } + + internal IEnumerable EnumerateAllKeys() + { + return EnumerateUserKeys().Concat(EnumerateMachineKeys()); + } + + private static IEnumerable EnumerateFiles(string directory) + { + try + { + return Directory.EnumerateFiles(directory); + } + catch (DirectoryNotFoundException) + { + } + + return []; + } + + internal static KeyPaths GetKeyPaths() + { + if (s_instance is not null) + { + return s_instance; + } + + // https://learn.microsoft.com/en-us/windows/win32/seccng/key-storage-and-retrieval + WindowsIdentity identity = WindowsIdentity.GetCurrent(); + string userSid = identity.User!.ToString(); + + string userKeyBase = Path.Join( + Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), + "Microsoft", + "Crypto"); + + string machineKeyBase = Path.Join( + Environment.GetFolderPath(Environment.SpecialFolder.CommonApplicationData), + "Microsoft", + "Crypto"); + + KeyPaths paths = new() + { + _capiUserDsa = Path.Join(userKeyBase, "DSS", userSid), + _capiUserRsa = Path.Join(userKeyBase, "RSA", userSid), + _capiMachineDsa = Path.Join(machineKeyBase, "DSS", "MachineKeys"), + _capiMachineRsa = Path.Join(machineKeyBase, "RSA", "MachineKeys"), + _cngUser = Path.Join(userKeyBase, "Keys"), + _cngMachine = Path.Join(machineKeyBase, "Keys"), + }; + + s_instance = paths; + return s_instance; + } + } + } +} diff --git a/src/libraries/System.Text.Json/src/System.Text.Json.csproj b/src/libraries/System.Text.Json/src/System.Text.Json.csproj index 8d0da4abcfc9ab..707a643b24c467 100644 --- a/src/libraries/System.Text.Json/src/System.Text.Json.csproj +++ b/src/libraries/System.Text.Json/src/System.Text.Json.csproj @@ -9,6 +9,8 @@ true false true + true + 1 Provides high-performance and low-allocating types that serialize objects to JavaScript Object Notation (JSON) text and deserialize JSON text to objects, with UTF-8 support built-in. Also provides types to read and write JSON text encoded as UTF-8, and to create an in-memory document object model (DOM), that is read-only, for random access of the JSON elements within a structured view of the data. The System.Text.Json library is built-in as part of the shared framework in .NET Runtime. The package can be installed when you need to use it in other target frameworks. diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Schema/JsonSchema.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Schema/JsonSchema.cs index 0948acc19bb922..8ffc12bd077926 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Schema/JsonSchema.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Schema/JsonSchema.cs @@ -26,8 +26,8 @@ internal sealed class JsonSchema internal const string MinLengthPropertyName = "minLength"; internal const string MaxLengthPropertyName = "maxLength"; - public static JsonSchema False { get; } = new(false); - public static JsonSchema True { get; } = new(true); + public static JsonSchema CreateFalseSchema() => new(false); + public static JsonSchema CreateTrueSchema() => new(true); public JsonSchema() { } private JsonSchema(bool trueOrFalse) { _trueOrFalse = trueOrFalse; } @@ -279,7 +279,7 @@ public static void EnsureMutable(ref JsonSchema schema) switch (schema._trueOrFalse) { case false: - schema = new JsonSchema { Not = True }; + schema = new JsonSchema { Not = CreateTrueSchema() }; break; case true: schema = new JsonSchema(); diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Schema/JsonSchemaExporter.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Schema/JsonSchemaExporter.cs index 0e8fa55dc64939..0551255273b833 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Schema/JsonSchemaExporter.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Schema/JsonSchemaExporter.cs @@ -211,7 +211,7 @@ private static JsonSchema MapJsonSchemaCore( JsonUnmappedMemberHandling effectiveUnmappedMemberHandling = typeInfo.UnmappedMemberHandling ?? typeInfo.Options.UnmappedMemberHandling; if (effectiveUnmappedMemberHandling is JsonUnmappedMemberHandling.Disallow) { - additionalProperties = JsonSchema.False; + additionalProperties = JsonSchema.CreateFalseSchema(); } if (typeDiscriminator is { } typeDiscriminatorPair) @@ -350,7 +350,7 @@ private static JsonSchema MapJsonSchemaCore( default: Debug.Assert(typeInfo.Kind is JsonTypeInfoKind.None); // Return a `true` schema for types with user-defined converters. - return CompleteSchema(ref state, JsonSchema.True); + return CompleteSchema(ref state, JsonSchema.CreateTrueSchema()); } JsonSchema CompleteSchema(ref GenerationState state, JsonSchema schema) diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Node/JsonNodeConverter.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Node/JsonNodeConverter.cs index 4f9e1a6e39b6fc..a88039e2a42117 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Node/JsonNodeConverter.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Node/JsonNodeConverter.cs @@ -80,6 +80,6 @@ public override void Write(Utf8JsonWriter writer, JsonNode? value, JsonSerialize return node; } - internal override JsonSchema? GetSchema(JsonNumberHandling _) => JsonSchema.True; + internal override JsonSchema? GetSchema(JsonNumberHandling _) => JsonSchema.CreateTrueSchema(); } } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Node/JsonValueConverter.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Node/JsonValueConverter.cs index 97dbea8bbf7a9e..b912ed898b42bd 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Node/JsonValueConverter.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Node/JsonValueConverter.cs @@ -31,6 +31,6 @@ public override void Write(Utf8JsonWriter writer, JsonValue? value, JsonSerializ return JsonValue.CreateFromElement(ref element, options.GetNodeOptions()); } - internal override JsonSchema? GetSchema(JsonNumberHandling _) => JsonSchema.True; + internal override JsonSchema? GetSchema(JsonNumberHandling _) => JsonSchema.CreateTrueSchema(); } } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Object/ObjectConverter.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Object/ObjectConverter.cs index bda21c258fbe0e..27839a36f88f7f 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Object/ObjectConverter.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Object/ObjectConverter.cs @@ -147,6 +147,6 @@ internal override bool OnTryRead(ref Utf8JsonReader reader, Type typeToConvert, return true; } - internal override JsonSchema? GetSchema(JsonNumberHandling _) => JsonSchema.True; + internal override JsonSchema? GetSchema(JsonNumberHandling _) => JsonSchema.CreateTrueSchema(); } } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/JsonDocumentConverter.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/JsonDocumentConverter.cs index fd964f09800f9e..9fbb293639152c 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/JsonDocumentConverter.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/JsonDocumentConverter.cs @@ -26,6 +26,6 @@ public override void Write(Utf8JsonWriter writer, JsonDocument? value, JsonSeria value.WriteTo(writer); } - internal override JsonSchema? GetSchema(JsonNumberHandling _) => JsonSchema.True; + internal override JsonSchema? GetSchema(JsonNumberHandling _) => JsonSchema.CreateTrueSchema(); } } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/JsonElementConverter.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/JsonElementConverter.cs index 79e8ef4bf280d7..718d9fa8024630 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/JsonElementConverter.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/JsonElementConverter.cs @@ -18,6 +18,6 @@ public override void Write(Utf8JsonWriter writer, JsonElement value, JsonSeriali value.WriteTo(writer); } - internal override JsonSchema? GetSchema(JsonNumberHandling _) => JsonSchema.True; + internal override JsonSchema? GetSchema(JsonNumberHandling _) => JsonSchema.CreateTrueSchema(); } } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/UnsupportedTypeConverter.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/UnsupportedTypeConverter.cs index f80af7c92b6c74..37281cd9557ff1 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/UnsupportedTypeConverter.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Converters/Value/UnsupportedTypeConverter.cs @@ -21,6 +21,6 @@ public override void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions throw new NotSupportedException(ErrorMessage); internal override JsonSchema? GetSchema(JsonNumberHandling _) => - new JsonSchema { Comment = "Unsupported .NET type", Not = JsonSchema.True }; + new JsonSchema { Comment = "Unsupported .NET type", Not = JsonSchema.CreateTrueSchema() }; } } diff --git a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonTypeInfo.cs b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonTypeInfo.cs index 00c4245a4c87bd..bd3e3d9241f857 100644 --- a/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonTypeInfo.cs +++ b/src/libraries/System.Text.Json/src/System/Text/Json/Serialization/Metadata/JsonTypeInfo.cs @@ -1209,7 +1209,8 @@ internal void ConfigureConstructorParameters() continue; } - ParameterLookupKey paramKey = new(propertyInfo.PropertyType, propertyInfo.Name); + string propertyName = propertyInfo.MemberName ?? propertyInfo.Name; + ParameterLookupKey paramKey = new(propertyInfo.PropertyType, propertyName); if (!parameterIndex.TryAdd(paramKey, parameterInfo)) { // Multiple object properties cannot bind to the same constructor parameter. diff --git a/src/libraries/System.Text.Json/tests/Common/ConstructorTests/ConstructorTests.ParameterMatching.cs b/src/libraries/System.Text.Json/tests/Common/ConstructorTests/ConstructorTests.ParameterMatching.cs index e134d42286de91..d46253c65761e1 100644 --- a/src/libraries/System.Text.Json/tests/Common/ConstructorTests/ConstructorTests.ParameterMatching.cs +++ b/src/libraries/System.Text.Json/tests/Common/ConstructorTests/ConstructorTests.ParameterMatching.cs @@ -1668,5 +1668,32 @@ public async Task RespectRequiredConstructorParameters_NoParameterMissing_Succee Assert.Equal(2, result.Y); Assert.Equal(3, result.Z); } + + [Fact] + public async Task ClassWithConflictingCaseInsensitiveProperties_Succeeds_When_CaseSensitive() + { + // Regression test for https://github.com/dotnet/runtime/issues/109768 + + string json = """{"a": "lower", "A": "upper"}"""; + ClassWithConflictingCaseInsensitiveProperties result = await Serializer.DeserializeWrapper(json); + Assert.Equal("lower", result.From); + Assert.Equal("upper", result.To); + } + + public class ClassWithConflictingCaseInsensitiveProperties + { + [JsonPropertyName("a")] + public string From { get; set; } + + [JsonPropertyName("A")] + public string To { get; set; } + + [JsonConstructor] + public ClassWithConflictingCaseInsensitiveProperties(string from, string to) + { + From = from; + To = to; + } + } } } diff --git a/src/libraries/System.Text.Json/tests/Common/JsonSchemaExporterTests.TestTypes.cs b/src/libraries/System.Text.Json/tests/Common/JsonSchemaExporterTests.TestTypes.cs index e128d6e6e474c5..f89625be6da824 100644 --- a/src/libraries/System.Text.Json/tests/Common/JsonSchemaExporterTests.TestTypes.cs +++ b/src/libraries/System.Text.Json/tests/Common/JsonSchemaExporterTests.TestTypes.cs @@ -1102,6 +1102,18 @@ of the type which points to the first occurrence. */ } """); + yield return new TestData( + Value: new() { Prop1 = new() , Prop2 = new() }, + ExpectedJsonSchema: """ + { + "type": ["object","null"], + "properties": { + "Prop1": true, + "Prop2": true, + } + } + """); + // Collection types yield return new TestData([1, 2, 3], ExpectedJsonSchema: """{"type":["array","null"],"items":{"type":"integer"}}"""); yield return new TestData>([false, true, false], ExpectedJsonSchema: """{"type":["array","null"],"items":{"type":"boolean"}}"""); @@ -1586,6 +1598,29 @@ public interface ITestData IEnumerable GetTestDataForAllValues(); } + public class ClassWithPropertiesUsingCustomConverters + { + [JsonPropertyOrder(0)] + public ClassWithCustomConverter1 Prop1 { get; set; } + [JsonPropertyOrder(1)] + public ClassWithCustomConverter2 Prop2 { get; set; } + + [JsonConverter(typeof(CustomConverter))] + public class ClassWithCustomConverter1; + + [JsonConverter(typeof(CustomConverter))] + public class ClassWithCustomConverter2; + + public sealed class CustomConverter : JsonConverter + { + public override T? Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSerializerOptions options) + => default; + + public override void Write(Utf8JsonWriter writer, T value, JsonSerializerOptions options) + => writer.WriteNullValue(); + } + } + private static TAttribute? GetCustomAttribute(ICustomAttributeProvider? provider, bool inherit = false) where TAttribute : Attribute => provider?.GetCustomAttributes(typeof(TAttribute), inherit).FirstOrDefault() as TAttribute; } diff --git a/src/libraries/System.Text.Json/tests/Common/JsonSchemaExporterTests.cs b/src/libraries/System.Text.Json/tests/Common/JsonSchemaExporterTests.cs index 5bc3c542246662..8fdaf7bf2fc01f 100644 --- a/src/libraries/System.Text.Json/tests/Common/JsonSchemaExporterTests.cs +++ b/src/libraries/System.Text.Json/tests/Common/JsonSchemaExporterTests.cs @@ -98,6 +98,32 @@ public void CanGenerateXElementSchema() Assert.True(schema.ToJsonString().Length < 100_000); } + [Fact] + public void TransformSchemaNode_PropertiesWithCustomConverters() + { + // Regression test for https://github.com/dotnet/runtime/issues/109868 + List<(Type? ParentType, string? PropertyName, Type type)> visitedNodes = new(); + JsonSchemaExporterOptions exporterOptions = new() + { + TransformSchemaNode = (ctx, schema) => + { + visitedNodes.Add((ctx.PropertyInfo?.DeclaringType, ctx.PropertyInfo?.Name, ctx.TypeInfo.Type)); + return schema; + } + }; + + List<(Type? ParentType, string? PropertyName, Type type)> expectedNodes = + [ + (typeof(ClassWithPropertiesUsingCustomConverters), "Prop1", typeof(ClassWithPropertiesUsingCustomConverters.ClassWithCustomConverter1)), + (typeof(ClassWithPropertiesUsingCustomConverters), "Prop2", typeof(ClassWithPropertiesUsingCustomConverters.ClassWithCustomConverter2)), + (null, null, typeof(ClassWithPropertiesUsingCustomConverters)), + ]; + + Serializer.DefaultOptions.GetJsonSchemaAsNode(typeof(ClassWithPropertiesUsingCustomConverters), exporterOptions); + + Assert.Equal(expectedNodes, visitedNodes); + } + [Fact] public void TypeWithDisallowUnmappedMembers_AdditionalPropertiesFailValidation() { diff --git a/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Tests/Serialization/ConstructorTests.cs b/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Tests/Serialization/ConstructorTests.cs index 1f2fe901f456ea..06ff3b6e39bb1c 100644 --- a/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Tests/Serialization/ConstructorTests.cs +++ b/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Tests/Serialization/ConstructorTests.cs @@ -154,6 +154,7 @@ protected ConstructorTests_Metadata(JsonSerializerWrapper stringWrapper) [JsonSerializable(typeof(TypeWithEnumParameters))] [JsonSerializable(typeof(ClassWithIgnoredPropertyDefaultParam))] [JsonSerializable(typeof(ClassWithCustomConverterOnCtorParameter))] + [JsonSerializable(typeof(ClassWithConflictingCaseInsensitiveProperties))] internal sealed partial class ConstructorTestsContext_Metadata : JsonSerializerContext { } @@ -303,6 +304,7 @@ public ConstructorTests_Default(JsonSerializerWrapper jsonSerializer) : base(jso [JsonSerializable(typeof(TypeWithEnumParameters))] [JsonSerializable(typeof(ClassWithIgnoredPropertyDefaultParam))] [JsonSerializable(typeof(ClassWithCustomConverterOnCtorParameter))] + [JsonSerializable(typeof(ClassWithConflictingCaseInsensitiveProperties))] internal sealed partial class ConstructorTestsContext_Default : JsonSerializerContext { } diff --git a/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Tests/Serialization/JsonSchemaExporterTests.cs b/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Tests/Serialization/JsonSchemaExporterTests.cs index 01f3b7747fedf2..c091d09b56a009 100644 --- a/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Tests/Serialization/JsonSchemaExporterTests.cs +++ b/src/libraries/System.Text.Json/tests/System.Text.Json.SourceGeneration.Tests/Serialization/JsonSchemaExporterTests.cs @@ -110,6 +110,7 @@ public sealed partial class JsonSchemaExporterTests_SourceGen() [JsonSerializable(typeof(ClassWithComponentModelAttributes))] [JsonSerializable(typeof(ClassWithJsonPointerEscapablePropertyNames))] [JsonSerializable(typeof(ClassWithOptionalObjectParameter))] + [JsonSerializable(typeof(ClassWithPropertiesUsingCustomConverters))] // Collection types [JsonSerializable(typeof(int[]))] [JsonSerializable(typeof(List))] diff --git a/src/libraries/System.Threading.ThreadPool/tests/ThreadPoolTests.cs b/src/libraries/System.Threading.ThreadPool/tests/ThreadPoolTests.cs index a182c7c583630c..f9e454abbe8a64 100644 --- a/src/libraries/System.Threading.ThreadPool/tests/ThreadPoolTests.cs +++ b/src/libraries/System.Threading.ThreadPool/tests/ThreadPoolTests.cs @@ -1263,12 +1263,13 @@ public static void PrioritizationExperimentConfigVarTest() RemoteExecutor.Invoke(() => { const int WorkItemCountPerKind = 100; + const int Kinds = 3; int completedWorkItemCount = 0; var allWorkItemsCompleted = new AutoResetEvent(false); Action workItem = _ => { - if (Interlocked.Increment(ref completedWorkItemCount) == WorkItemCountPerKind * 3) + if (Interlocked.Increment(ref completedWorkItemCount) == WorkItemCountPerKind * Kinds) { allWorkItemsCompleted.Set(); } @@ -1305,6 +1306,27 @@ public static void PrioritizationExperimentConfigVarTest() 0, preferLocal: false); + ThreadPool.UnsafeQueueUserWorkItem( + _ => + { + // Enqueue tasks from a thread pool thread into the local queue, + // then block this thread until a queued task completes. + + startTest.CheckedWait(); + + Task queued = null; + for (int i = 0; i < WorkItemCountPerKind; i++) + { + queued = Task.Run(() => workItem(0)); + } + + queued + .ContinueWith(_ => { }) // prevent wait inlining + .Wait(); + }, + 0, + preferLocal: false); + t = new Thread(() => { // Enqueue local work from thread pool worker threads diff --git a/src/libraries/apicompat/ApiCompatBaseline.NetCoreAppLatestStable.xml b/src/libraries/apicompat/ApiCompatBaseline.NetCoreAppLatestStable.xml index 2f653968fe098f..67e3e395c704f5 100644 --- a/src/libraries/apicompat/ApiCompatBaseline.NetCoreAppLatestStable.xml +++ b/src/libraries/apicompat/ApiCompatBaseline.NetCoreAppLatestStable.xml @@ -1,2158 +1,4 @@  - - CP0014 - M:System.Console.SetWindowSize(System.Int32,System.Int32):[T:System.Runtime.Versioning.UnsupportedOSPlatformAttribute] - net8.0/mscorlib.dll - net9.0/mscorlib.dll - - - CP0014 - P:System.Console.WindowHeight:[T:System.Runtime.Versioning.UnsupportedOSPlatformAttribute] - net8.0/mscorlib.dll - net9.0/mscorlib.dll - - - CP0014 - P:System.Console.WindowWidth:[T:System.Runtime.Versioning.UnsupportedOSPlatformAttribute] - net8.0/mscorlib.dll - net9.0/mscorlib.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.String,System.String)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/netstandard.dll - net9.0/netstandard.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.String,System.String)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/netstandard.dll - net9.0/netstandard.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.String,System.Type)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/netstandard.dll - net9.0/netstandard.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.String,System.Type)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/netstandard.dll - net9.0/netstandard.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.String)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/netstandard.dll - net9.0/netstandard.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.Type,System.Type)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/netstandard.dll - net9.0/netstandard.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.Type,System.Type)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/netstandard.dll - net9.0/netstandard.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.Type)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/netstandard.dll - net9.0/netstandard.dll - - - CP0014 - M:System.ComponentModel.EditorAttribute.#ctor(System.String,System.String)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/netstandard.dll - net9.0/netstandard.dll - - - CP0014 - M:System.ComponentModel.EditorAttribute.#ctor(System.String,System.String)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/netstandard.dll - net9.0/netstandard.dll - - - CP0014 - M:System.ComponentModel.EditorAttribute.#ctor(System.String,System.Type)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/netstandard.dll - net9.0/netstandard.dll - - - CP0014 - M:System.ComponentModel.EditorAttribute.#ctor(System.String,System.Type)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/netstandard.dll - net9.0/netstandard.dll - - - CP0014 - M:System.ComponentModel.EditorAttribute.#ctor(System.Type,System.Type)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/netstandard.dll - net9.0/netstandard.dll - - - CP0014 - M:System.ComponentModel.EditorAttribute.#ctor(System.Type,System.Type)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/netstandard.dll - net9.0/netstandard.dll - - - CP0014 - M:System.ComponentModel.EnumConverter.#ctor(System.Type)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/netstandard.dll - net9.0/netstandard.dll - - - CP0014 - M:System.Console.SetWindowSize(System.Int32,System.Int32):[T:System.Runtime.Versioning.UnsupportedOSPlatformAttribute] - net8.0/netstandard.dll - net9.0/netstandard.dll - - - CP0014 - P:System.ComponentModel.DesignerAttribute.DesignerBaseTypeName:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/netstandard.dll - net9.0/netstandard.dll - - - CP0014 - P:System.ComponentModel.DesignerAttribute.DesignerTypeName:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/netstandard.dll - net9.0/netstandard.dll - - - CP0014 - P:System.ComponentModel.EditorAttribute.EditorBaseTypeName:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/netstandard.dll - net9.0/netstandard.dll - - - CP0014 - P:System.ComponentModel.EditorAttribute.EditorTypeName:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/netstandard.dll - net9.0/netstandard.dll - - - CP0014 - P:System.ComponentModel.EnumConverter.EnumType:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/netstandard.dll - net9.0/netstandard.dll - - - CP0014 - P:System.Console.WindowHeight:[T:System.Runtime.Versioning.UnsupportedOSPlatformAttribute] - net8.0/netstandard.dll - net9.0/netstandard.dll - - - CP0014 - P:System.Console.WindowWidth:[T:System.Runtime.Versioning.UnsupportedOSPlatformAttribute] - net8.0/netstandard.dll - net9.0/netstandard.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.String,System.String)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.Primitives.dll - net9.0/System.ComponentModel.Primitives.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.String,System.String)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.Primitives.dll - net9.0/System.ComponentModel.Primitives.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.String,System.Type)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.Primitives.dll - net9.0/System.ComponentModel.Primitives.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.String,System.Type)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.Primitives.dll - net9.0/System.ComponentModel.Primitives.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.String)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.Primitives.dll - net9.0/System.ComponentModel.Primitives.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.Type,System.Type)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.Primitives.dll - net9.0/System.ComponentModel.Primitives.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.Type,System.Type)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.Primitives.dll - net9.0/System.ComponentModel.Primitives.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.Type)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.Primitives.dll - net9.0/System.ComponentModel.Primitives.dll - - - CP0014 - M:System.ComponentModel.EditorAttribute.#ctor(System.String,System.String)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.Primitives.dll - net9.0/System.ComponentModel.Primitives.dll - - - CP0014 - M:System.ComponentModel.EditorAttribute.#ctor(System.String,System.String)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.Primitives.dll - net9.0/System.ComponentModel.Primitives.dll - - - CP0014 - M:System.ComponentModel.EditorAttribute.#ctor(System.String,System.Type)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.Primitives.dll - net9.0/System.ComponentModel.Primitives.dll - - - CP0014 - M:System.ComponentModel.EditorAttribute.#ctor(System.String,System.Type)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.Primitives.dll - net9.0/System.ComponentModel.Primitives.dll - - - CP0014 - M:System.ComponentModel.EditorAttribute.#ctor(System.Type,System.Type)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.Primitives.dll - net9.0/System.ComponentModel.Primitives.dll - - - CP0014 - M:System.ComponentModel.EditorAttribute.#ctor(System.Type,System.Type)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.Primitives.dll - net9.0/System.ComponentModel.Primitives.dll - - - CP0014 - P:System.ComponentModel.DesignerAttribute.DesignerBaseTypeName:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.Primitives.dll - net9.0/System.ComponentModel.Primitives.dll - - - CP0014 - P:System.ComponentModel.DesignerAttribute.DesignerTypeName:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.Primitives.dll - net9.0/System.ComponentModel.Primitives.dll - - - CP0014 - P:System.ComponentModel.EditorAttribute.EditorBaseTypeName:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.Primitives.dll - net9.0/System.ComponentModel.Primitives.dll - - - CP0014 - P:System.ComponentModel.EditorAttribute.EditorTypeName:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.Primitives.dll - net9.0/System.ComponentModel.Primitives.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.String,System.String)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.TypeConverter.dll - net9.0/System.ComponentModel.TypeConverter.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.String,System.String)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.TypeConverter.dll - net9.0/System.ComponentModel.TypeConverter.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.String,System.Type)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.TypeConverter.dll - net9.0/System.ComponentModel.TypeConverter.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.String,System.Type)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.TypeConverter.dll - net9.0/System.ComponentModel.TypeConverter.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.String)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.TypeConverter.dll - net9.0/System.ComponentModel.TypeConverter.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.Type,System.Type)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.TypeConverter.dll - net9.0/System.ComponentModel.TypeConverter.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.Type,System.Type)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.TypeConverter.dll - net9.0/System.ComponentModel.TypeConverter.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.Type)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.TypeConverter.dll - net9.0/System.ComponentModel.TypeConverter.dll - - - CP0014 - M:System.ComponentModel.EditorAttribute.#ctor(System.String,System.String)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.TypeConverter.dll - net9.0/System.ComponentModel.TypeConverter.dll - - - CP0014 - M:System.ComponentModel.EditorAttribute.#ctor(System.String,System.String)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.TypeConverter.dll - net9.0/System.ComponentModel.TypeConverter.dll - - - CP0014 - M:System.ComponentModel.EditorAttribute.#ctor(System.String,System.Type)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.TypeConverter.dll - net9.0/System.ComponentModel.TypeConverter.dll - - - CP0014 - M:System.ComponentModel.EditorAttribute.#ctor(System.String,System.Type)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.TypeConverter.dll - net9.0/System.ComponentModel.TypeConverter.dll - - - CP0014 - M:System.ComponentModel.EditorAttribute.#ctor(System.Type,System.Type)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.TypeConverter.dll - net9.0/System.ComponentModel.TypeConverter.dll - - - CP0014 - M:System.ComponentModel.EditorAttribute.#ctor(System.Type,System.Type)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.TypeConverter.dll - net9.0/System.ComponentModel.TypeConverter.dll - - - CP0014 - M:System.ComponentModel.EnumConverter.#ctor(System.Type)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.TypeConverter.dll - net9.0/System.ComponentModel.TypeConverter.dll - - - CP0014 - P:System.ComponentModel.DesignerAttribute.DesignerBaseTypeName:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.TypeConverter.dll - net9.0/System.ComponentModel.TypeConverter.dll - - - CP0014 - P:System.ComponentModel.DesignerAttribute.DesignerTypeName:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.TypeConverter.dll - net9.0/System.ComponentModel.TypeConverter.dll - - - CP0014 - P:System.ComponentModel.EditorAttribute.EditorBaseTypeName:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.TypeConverter.dll - net9.0/System.ComponentModel.TypeConverter.dll - - - CP0014 - P:System.ComponentModel.EditorAttribute.EditorTypeName:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.TypeConverter.dll - net9.0/System.ComponentModel.TypeConverter.dll - - - CP0014 - P:System.ComponentModel.EnumConverter.EnumType:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.ComponentModel.TypeConverter.dll - net9.0/System.ComponentModel.TypeConverter.dll - - - CP0014 - M:System.Console.SetWindowSize(System.Int32,System.Int32):[T:System.Runtime.Versioning.UnsupportedOSPlatformAttribute] - net8.0/System.Console.dll - net9.0/System.Console.dll - - - CP0014 - P:System.Console.WindowHeight:[T:System.Runtime.Versioning.UnsupportedOSPlatformAttribute] - net8.0/System.Console.dll - net9.0/System.Console.dll - - - CP0014 - P:System.Console.WindowWidth:[T:System.Runtime.Versioning.UnsupportedOSPlatformAttribute] - net8.0/System.Console.dll - net9.0/System.Console.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.String,System.String)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.dll - net9.0/System.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.String,System.String)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.dll - net9.0/System.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.String,System.Type)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.dll - net9.0/System.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.String,System.Type)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.dll - net9.0/System.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.String)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.dll - net9.0/System.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.Type,System.Type)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.dll - net9.0/System.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.Type,System.Type)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.dll - net9.0/System.dll - - - CP0014 - M:System.ComponentModel.DesignerAttribute.#ctor(System.Type)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.dll - net9.0/System.dll - - - CP0014 - M:System.ComponentModel.EditorAttribute.#ctor(System.String,System.String)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.dll - net9.0/System.dll - - - CP0014 - M:System.ComponentModel.EditorAttribute.#ctor(System.String,System.String)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.dll - net9.0/System.dll - - - CP0014 - M:System.ComponentModel.EditorAttribute.#ctor(System.String,System.Type)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.dll - net9.0/System.dll - - - CP0014 - M:System.ComponentModel.EditorAttribute.#ctor(System.String,System.Type)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.dll - net9.0/System.dll - - - CP0014 - M:System.ComponentModel.EditorAttribute.#ctor(System.Type,System.Type)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.dll - net9.0/System.dll - - - CP0014 - M:System.ComponentModel.EditorAttribute.#ctor(System.Type,System.Type)$1:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.dll - net9.0/System.dll - - - CP0014 - M:System.ComponentModel.EnumConverter.#ctor(System.Type)$0:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.dll - net9.0/System.dll - - - CP0014 - P:System.ComponentModel.DesignerAttribute.DesignerBaseTypeName:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.dll - net9.0/System.dll - - - CP0014 - P:System.ComponentModel.DesignerAttribute.DesignerTypeName:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.dll - net9.0/System.dll - - - CP0014 - P:System.ComponentModel.EditorAttribute.EditorBaseTypeName:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.dll - net9.0/System.dll - - - CP0014 - P:System.ComponentModel.EditorAttribute.EditorTypeName:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.dll - net9.0/System.dll - - - CP0014 - P:System.ComponentModel.EnumConverter.EnumType:[T:System.Diagnostics.CodeAnalysis.DynamicallyAccessedMembersAttribute] - net8.0/System.dll - net9.0/System.dll - - - CP0014 - M:System.Runtime.Intrinsics.X86.X86Base.DivRem(System.UInt32,System.Int32,System.Int32):[T:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0014 - M:System.Runtime.Intrinsics.X86.X86Base.DivRem(System.UInt32,System.UInt32,System.UInt32):[T:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0014 - M:System.Runtime.Intrinsics.X86.X86Base.DivRem(System.UIntPtr,System.IntPtr,System.IntPtr):[T:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0014 - M:System.Runtime.Intrinsics.X86.X86Base.DivRem(System.UIntPtr,System.UIntPtr,System.UIntPtr):[T:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0014 - M:System.Runtime.Intrinsics.X86.X86Base.X64.DivRem(System.UInt64,System.Int64,System.Int64):[T:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0014 - M:System.Runtime.Intrinsics.X86.X86Base.X64.DivRem(System.UInt64,System.UInt64,System.UInt64):[T:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0014 - T:System.Runtime.Intrinsics.X86.AvxVnni:[T:System.Runtime.Versioning.RequiresPreviewFeaturesAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.ShiftLeftLogicalSaturateScalar(System.Runtime.Intrinsics.Vector64{System.Byte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.ShiftLeftLogicalSaturateScalar(System.Runtime.Intrinsics.Vector64{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.ShiftLeftLogicalSaturateScalar(System.Runtime.Intrinsics.Vector64{System.Int32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.ShiftLeftLogicalSaturateScalar(System.Runtime.Intrinsics.Vector64{System.SByte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.ShiftLeftLogicalSaturateScalar(System.Runtime.Intrinsics.Vector64{System.UInt16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.ShiftLeftLogicalSaturateScalar(System.Runtime.Intrinsics.Vector64{System.UInt32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.ShiftLeftLogicalSaturateUnsignedScalar(System.Runtime.Intrinsics.Vector64{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.ShiftLeftLogicalSaturateUnsignedScalar(System.Runtime.Intrinsics.Vector64{System.Int32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.ShiftLeftLogicalSaturateUnsignedScalar(System.Runtime.Intrinsics.Vector64{System.SByte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.ShiftRightArithmeticNarrowingSaturateScalar(System.Runtime.Intrinsics.Vector64{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.ShiftRightArithmeticNarrowingSaturateScalar(System.Runtime.Intrinsics.Vector64{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.ShiftRightArithmeticNarrowingSaturateUnsignedScalar(System.Runtime.Intrinsics.Vector64{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.ShiftRightArithmeticNarrowingSaturateUnsignedScalar(System.Runtime.Intrinsics.Vector64{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.ShiftRightArithmeticRoundedNarrowingSaturateScalar(System.Runtime.Intrinsics.Vector64{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.ShiftRightArithmeticRoundedNarrowingSaturateScalar(System.Runtime.Intrinsics.Vector64{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.ShiftRightArithmeticRoundedNarrowingSaturateUnsignedScalar(System.Runtime.Intrinsics.Vector64{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.ShiftRightArithmeticRoundedNarrowingSaturateUnsignedScalar(System.Runtime.Intrinsics.Vector64{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.ShiftRightLogicalNarrowingSaturateScalar(System.Runtime.Intrinsics.Vector64{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.ShiftRightLogicalNarrowingSaturateScalar(System.Runtime.Intrinsics.Vector64{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.ShiftRightLogicalNarrowingSaturateScalar(System.Runtime.Intrinsics.Vector64{System.UInt16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.ShiftRightLogicalNarrowingSaturateScalar(System.Runtime.Intrinsics.Vector64{System.UInt64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.ShiftRightLogicalRoundedNarrowingSaturateScalar(System.Runtime.Intrinsics.Vector64{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.ShiftRightLogicalRoundedNarrowingSaturateScalar(System.Runtime.Intrinsics.Vector64{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.ShiftRightLogicalRoundedNarrowingSaturateScalar(System.Runtime.Intrinsics.Vector64{System.UInt16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.Arm64.ShiftRightLogicalRoundedNarrowingSaturateScalar(System.Runtime.Intrinsics.Vector64{System.UInt64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftAndInsert(System.Runtime.Intrinsics.Vector128{System.Byte},System.Runtime.Intrinsics.Vector128{System.Byte},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftAndInsert(System.Runtime.Intrinsics.Vector128{System.Int16},System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftAndInsert(System.Runtime.Intrinsics.Vector128{System.Int64},System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftAndInsert(System.Runtime.Intrinsics.Vector128{System.SByte},System.Runtime.Intrinsics.Vector128{System.SByte},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftAndInsert(System.Runtime.Intrinsics.Vector128{System.UInt16},System.Runtime.Intrinsics.Vector128{System.UInt16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftAndInsert(System.Runtime.Intrinsics.Vector128{System.UInt64},System.Runtime.Intrinsics.Vector128{System.UInt64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftAndInsert(System.Runtime.Intrinsics.Vector64{System.Byte},System.Runtime.Intrinsics.Vector64{System.Byte},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftAndInsert(System.Runtime.Intrinsics.Vector64{System.Int16},System.Runtime.Intrinsics.Vector64{System.Int16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftAndInsert(System.Runtime.Intrinsics.Vector64{System.Int32},System.Runtime.Intrinsics.Vector64{System.Int32},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftAndInsert(System.Runtime.Intrinsics.Vector64{System.SByte},System.Runtime.Intrinsics.Vector64{System.SByte},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftAndInsert(System.Runtime.Intrinsics.Vector64{System.UInt16},System.Runtime.Intrinsics.Vector64{System.UInt16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftAndInsert(System.Runtime.Intrinsics.Vector64{System.UInt32},System.Runtime.Intrinsics.Vector64{System.UInt32},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftAndInsertScalar(System.Runtime.Intrinsics.Vector64{System.Int64},System.Runtime.Intrinsics.Vector64{System.Int64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftAndInsertScalar(System.Runtime.Intrinsics.Vector64{System.UInt64},System.Runtime.Intrinsics.Vector64{System.UInt64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogical(System.Runtime.Intrinsics.Vector128{System.Byte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogical(System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogical(System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogical(System.Runtime.Intrinsics.Vector128{System.SByte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogical(System.Runtime.Intrinsics.Vector128{System.UInt16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogical(System.Runtime.Intrinsics.Vector128{System.UInt64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogical(System.Runtime.Intrinsics.Vector64{System.Byte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogical(System.Runtime.Intrinsics.Vector64{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogical(System.Runtime.Intrinsics.Vector64{System.Int32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogical(System.Runtime.Intrinsics.Vector64{System.SByte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogical(System.Runtime.Intrinsics.Vector64{System.UInt16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogical(System.Runtime.Intrinsics.Vector64{System.UInt32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalSaturate(System.Runtime.Intrinsics.Vector128{System.Byte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalSaturate(System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalSaturate(System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalSaturate(System.Runtime.Intrinsics.Vector128{System.SByte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalSaturate(System.Runtime.Intrinsics.Vector128{System.UInt16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalSaturate(System.Runtime.Intrinsics.Vector128{System.UInt64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalSaturate(System.Runtime.Intrinsics.Vector64{System.Byte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalSaturate(System.Runtime.Intrinsics.Vector64{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalSaturate(System.Runtime.Intrinsics.Vector64{System.Int32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalSaturate(System.Runtime.Intrinsics.Vector64{System.SByte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalSaturate(System.Runtime.Intrinsics.Vector64{System.UInt16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalSaturate(System.Runtime.Intrinsics.Vector64{System.UInt32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalSaturateScalar(System.Runtime.Intrinsics.Vector64{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalSaturateScalar(System.Runtime.Intrinsics.Vector64{System.UInt64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalSaturateUnsigned(System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalSaturateUnsigned(System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalSaturateUnsigned(System.Runtime.Intrinsics.Vector128{System.SByte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalSaturateUnsigned(System.Runtime.Intrinsics.Vector64{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalSaturateUnsigned(System.Runtime.Intrinsics.Vector64{System.Int32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalSaturateUnsigned(System.Runtime.Intrinsics.Vector64{System.SByte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalSaturateUnsignedScalar(System.Runtime.Intrinsics.Vector64{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalScalar(System.Runtime.Intrinsics.Vector64{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalScalar(System.Runtime.Intrinsics.Vector64{System.UInt64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalWideningLower(System.Runtime.Intrinsics.Vector64{System.Byte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalWideningLower(System.Runtime.Intrinsics.Vector64{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalWideningLower(System.Runtime.Intrinsics.Vector64{System.Int32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalWideningLower(System.Runtime.Intrinsics.Vector64{System.SByte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalWideningLower(System.Runtime.Intrinsics.Vector64{System.UInt16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalWideningLower(System.Runtime.Intrinsics.Vector64{System.UInt32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalWideningUpper(System.Runtime.Intrinsics.Vector128{System.Byte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalWideningUpper(System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalWideningUpper(System.Runtime.Intrinsics.Vector128{System.SByte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftLeftLogicalWideningUpper(System.Runtime.Intrinsics.Vector128{System.UInt16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightAndInsert(System.Runtime.Intrinsics.Vector128{System.Byte},System.Runtime.Intrinsics.Vector128{System.Byte},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightAndInsert(System.Runtime.Intrinsics.Vector128{System.Int16},System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightAndInsert(System.Runtime.Intrinsics.Vector128{System.Int64},System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightAndInsert(System.Runtime.Intrinsics.Vector128{System.SByte},System.Runtime.Intrinsics.Vector128{System.SByte},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightAndInsert(System.Runtime.Intrinsics.Vector128{System.UInt16},System.Runtime.Intrinsics.Vector128{System.UInt16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightAndInsert(System.Runtime.Intrinsics.Vector128{System.UInt64},System.Runtime.Intrinsics.Vector128{System.UInt64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightAndInsert(System.Runtime.Intrinsics.Vector64{System.Byte},System.Runtime.Intrinsics.Vector64{System.Byte},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightAndInsert(System.Runtime.Intrinsics.Vector64{System.Int16},System.Runtime.Intrinsics.Vector64{System.Int16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightAndInsert(System.Runtime.Intrinsics.Vector64{System.Int32},System.Runtime.Intrinsics.Vector64{System.Int32},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightAndInsert(System.Runtime.Intrinsics.Vector64{System.SByte},System.Runtime.Intrinsics.Vector64{System.SByte},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightAndInsert(System.Runtime.Intrinsics.Vector64{System.UInt16},System.Runtime.Intrinsics.Vector64{System.UInt16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightAndInsert(System.Runtime.Intrinsics.Vector64{System.UInt32},System.Runtime.Intrinsics.Vector64{System.UInt32},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightAndInsertScalar(System.Runtime.Intrinsics.Vector64{System.Int64},System.Runtime.Intrinsics.Vector64{System.Int64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightAndInsertScalar(System.Runtime.Intrinsics.Vector64{System.UInt64},System.Runtime.Intrinsics.Vector64{System.UInt64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector128{System.SByte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector64{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector64{System.Int32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmetic(System.Runtime.Intrinsics.Vector64{System.SByte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticAdd(System.Runtime.Intrinsics.Vector128{System.Int16},System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticAdd(System.Runtime.Intrinsics.Vector128{System.Int64},System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticAdd(System.Runtime.Intrinsics.Vector128{System.SByte},System.Runtime.Intrinsics.Vector128{System.SByte},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticAdd(System.Runtime.Intrinsics.Vector64{System.Int16},System.Runtime.Intrinsics.Vector64{System.Int16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticAdd(System.Runtime.Intrinsics.Vector64{System.Int32},System.Runtime.Intrinsics.Vector64{System.Int32},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticAdd(System.Runtime.Intrinsics.Vector64{System.SByte},System.Runtime.Intrinsics.Vector64{System.SByte},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticAddScalar(System.Runtime.Intrinsics.Vector64{System.Int64},System.Runtime.Intrinsics.Vector64{System.Int64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticNarrowingSaturateLower(System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticNarrowingSaturateLower(System.Runtime.Intrinsics.Vector128{System.Int32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticNarrowingSaturateLower(System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticNarrowingSaturateUnsignedLower(System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticNarrowingSaturateUnsignedLower(System.Runtime.Intrinsics.Vector128{System.Int32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticNarrowingSaturateUnsignedLower(System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticNarrowingSaturateUnsignedUpper(System.Runtime.Intrinsics.Vector64{System.Byte},System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticNarrowingSaturateUnsignedUpper(System.Runtime.Intrinsics.Vector64{System.UInt16},System.Runtime.Intrinsics.Vector128{System.Int32},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticNarrowingSaturateUnsignedUpper(System.Runtime.Intrinsics.Vector64{System.UInt32},System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticNarrowingSaturateUpper(System.Runtime.Intrinsics.Vector64{System.Int16},System.Runtime.Intrinsics.Vector128{System.Int32},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticNarrowingSaturateUpper(System.Runtime.Intrinsics.Vector64{System.Int32},System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticNarrowingSaturateUpper(System.Runtime.Intrinsics.Vector64{System.SByte},System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticRounded(System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticRounded(System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticRounded(System.Runtime.Intrinsics.Vector128{System.SByte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticRounded(System.Runtime.Intrinsics.Vector64{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticRounded(System.Runtime.Intrinsics.Vector64{System.Int32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticRounded(System.Runtime.Intrinsics.Vector64{System.SByte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticRoundedAdd(System.Runtime.Intrinsics.Vector128{System.Int16},System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticRoundedAdd(System.Runtime.Intrinsics.Vector128{System.Int64},System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticRoundedAdd(System.Runtime.Intrinsics.Vector128{System.SByte},System.Runtime.Intrinsics.Vector128{System.SByte},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticRoundedAdd(System.Runtime.Intrinsics.Vector64{System.Int16},System.Runtime.Intrinsics.Vector64{System.Int16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticRoundedAdd(System.Runtime.Intrinsics.Vector64{System.Int32},System.Runtime.Intrinsics.Vector64{System.Int32},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticRoundedAdd(System.Runtime.Intrinsics.Vector64{System.SByte},System.Runtime.Intrinsics.Vector64{System.SByte},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticRoundedAddScalar(System.Runtime.Intrinsics.Vector64{System.Int64},System.Runtime.Intrinsics.Vector64{System.Int64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticRoundedNarrowingSaturateLower(System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticRoundedNarrowingSaturateLower(System.Runtime.Intrinsics.Vector128{System.Int32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticRoundedNarrowingSaturateLower(System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticRoundedNarrowingSaturateUnsignedLower(System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticRoundedNarrowingSaturateUnsignedLower(System.Runtime.Intrinsics.Vector128{System.Int32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticRoundedNarrowingSaturateUnsignedLower(System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticRoundedNarrowingSaturateUnsignedUpper(System.Runtime.Intrinsics.Vector64{System.Byte},System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticRoundedNarrowingSaturateUnsignedUpper(System.Runtime.Intrinsics.Vector64{System.UInt16},System.Runtime.Intrinsics.Vector128{System.Int32},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticRoundedNarrowingSaturateUnsignedUpper(System.Runtime.Intrinsics.Vector64{System.UInt32},System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticRoundedNarrowingSaturateUpper(System.Runtime.Intrinsics.Vector64{System.Int16},System.Runtime.Intrinsics.Vector128{System.Int32},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticRoundedNarrowingSaturateUpper(System.Runtime.Intrinsics.Vector64{System.Int32},System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticRoundedNarrowingSaturateUpper(System.Runtime.Intrinsics.Vector64{System.SByte},System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticRoundedScalar(System.Runtime.Intrinsics.Vector64{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightArithmeticScalar(System.Runtime.Intrinsics.Vector64{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogical(System.Runtime.Intrinsics.Vector128{System.Byte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogical(System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogical(System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogical(System.Runtime.Intrinsics.Vector128{System.SByte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogical(System.Runtime.Intrinsics.Vector128{System.UInt16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogical(System.Runtime.Intrinsics.Vector128{System.UInt64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogical(System.Runtime.Intrinsics.Vector64{System.Byte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogical(System.Runtime.Intrinsics.Vector64{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogical(System.Runtime.Intrinsics.Vector64{System.Int32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogical(System.Runtime.Intrinsics.Vector64{System.SByte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogical(System.Runtime.Intrinsics.Vector64{System.UInt16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogical(System.Runtime.Intrinsics.Vector64{System.UInt32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalAdd(System.Runtime.Intrinsics.Vector128{System.Byte},System.Runtime.Intrinsics.Vector128{System.Byte},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalAdd(System.Runtime.Intrinsics.Vector128{System.Int16},System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalAdd(System.Runtime.Intrinsics.Vector128{System.Int64},System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalAdd(System.Runtime.Intrinsics.Vector128{System.SByte},System.Runtime.Intrinsics.Vector128{System.SByte},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalAdd(System.Runtime.Intrinsics.Vector128{System.UInt16},System.Runtime.Intrinsics.Vector128{System.UInt16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalAdd(System.Runtime.Intrinsics.Vector128{System.UInt64},System.Runtime.Intrinsics.Vector128{System.UInt64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalAdd(System.Runtime.Intrinsics.Vector64{System.Byte},System.Runtime.Intrinsics.Vector64{System.Byte},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalAdd(System.Runtime.Intrinsics.Vector64{System.Int16},System.Runtime.Intrinsics.Vector64{System.Int16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalAdd(System.Runtime.Intrinsics.Vector64{System.Int32},System.Runtime.Intrinsics.Vector64{System.Int32},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalAdd(System.Runtime.Intrinsics.Vector64{System.SByte},System.Runtime.Intrinsics.Vector64{System.SByte},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalAdd(System.Runtime.Intrinsics.Vector64{System.UInt16},System.Runtime.Intrinsics.Vector64{System.UInt16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalAdd(System.Runtime.Intrinsics.Vector64{System.UInt32},System.Runtime.Intrinsics.Vector64{System.UInt32},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalAddScalar(System.Runtime.Intrinsics.Vector64{System.Int64},System.Runtime.Intrinsics.Vector64{System.Int64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalAddScalar(System.Runtime.Intrinsics.Vector64{System.UInt64},System.Runtime.Intrinsics.Vector64{System.UInt64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalNarrowingLower(System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalNarrowingLower(System.Runtime.Intrinsics.Vector128{System.Int32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalNarrowingLower(System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalNarrowingLower(System.Runtime.Intrinsics.Vector128{System.UInt16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalNarrowingLower(System.Runtime.Intrinsics.Vector128{System.UInt32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalNarrowingLower(System.Runtime.Intrinsics.Vector128{System.UInt64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalNarrowingSaturateLower(System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalNarrowingSaturateLower(System.Runtime.Intrinsics.Vector128{System.Int32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalNarrowingSaturateLower(System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalNarrowingSaturateLower(System.Runtime.Intrinsics.Vector128{System.UInt16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalNarrowingSaturateLower(System.Runtime.Intrinsics.Vector128{System.UInt32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalNarrowingSaturateLower(System.Runtime.Intrinsics.Vector128{System.UInt64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalNarrowingSaturateUpper(System.Runtime.Intrinsics.Vector64{System.Byte},System.Runtime.Intrinsics.Vector128{System.UInt16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalNarrowingSaturateUpper(System.Runtime.Intrinsics.Vector64{System.Int16},System.Runtime.Intrinsics.Vector128{System.Int32},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalNarrowingSaturateUpper(System.Runtime.Intrinsics.Vector64{System.Int32},System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalNarrowingSaturateUpper(System.Runtime.Intrinsics.Vector64{System.SByte},System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalNarrowingSaturateUpper(System.Runtime.Intrinsics.Vector64{System.UInt16},System.Runtime.Intrinsics.Vector128{System.UInt32},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalNarrowingSaturateUpper(System.Runtime.Intrinsics.Vector64{System.UInt32},System.Runtime.Intrinsics.Vector128{System.UInt64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalNarrowingUpper(System.Runtime.Intrinsics.Vector64{System.Byte},System.Runtime.Intrinsics.Vector128{System.UInt16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalNarrowingUpper(System.Runtime.Intrinsics.Vector64{System.Int16},System.Runtime.Intrinsics.Vector128{System.Int32},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalNarrowingUpper(System.Runtime.Intrinsics.Vector64{System.Int32},System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalNarrowingUpper(System.Runtime.Intrinsics.Vector64{System.SByte},System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalNarrowingUpper(System.Runtime.Intrinsics.Vector64{System.UInt16},System.Runtime.Intrinsics.Vector128{System.UInt32},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalNarrowingUpper(System.Runtime.Intrinsics.Vector64{System.UInt32},System.Runtime.Intrinsics.Vector128{System.UInt64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRounded(System.Runtime.Intrinsics.Vector128{System.Byte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRounded(System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRounded(System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRounded(System.Runtime.Intrinsics.Vector128{System.SByte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRounded(System.Runtime.Intrinsics.Vector128{System.UInt16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRounded(System.Runtime.Intrinsics.Vector128{System.UInt64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRounded(System.Runtime.Intrinsics.Vector64{System.Byte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRounded(System.Runtime.Intrinsics.Vector64{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRounded(System.Runtime.Intrinsics.Vector64{System.Int32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRounded(System.Runtime.Intrinsics.Vector64{System.SByte},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRounded(System.Runtime.Intrinsics.Vector64{System.UInt16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRounded(System.Runtime.Intrinsics.Vector64{System.UInt32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedAdd(System.Runtime.Intrinsics.Vector128{System.Byte},System.Runtime.Intrinsics.Vector128{System.Byte},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedAdd(System.Runtime.Intrinsics.Vector128{System.Int16},System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedAdd(System.Runtime.Intrinsics.Vector128{System.Int64},System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedAdd(System.Runtime.Intrinsics.Vector128{System.SByte},System.Runtime.Intrinsics.Vector128{System.SByte},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedAdd(System.Runtime.Intrinsics.Vector128{System.UInt16},System.Runtime.Intrinsics.Vector128{System.UInt16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedAdd(System.Runtime.Intrinsics.Vector128{System.UInt64},System.Runtime.Intrinsics.Vector128{System.UInt64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedAdd(System.Runtime.Intrinsics.Vector64{System.Byte},System.Runtime.Intrinsics.Vector64{System.Byte},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedAdd(System.Runtime.Intrinsics.Vector64{System.Int16},System.Runtime.Intrinsics.Vector64{System.Int16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedAdd(System.Runtime.Intrinsics.Vector64{System.Int32},System.Runtime.Intrinsics.Vector64{System.Int32},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedAdd(System.Runtime.Intrinsics.Vector64{System.SByte},System.Runtime.Intrinsics.Vector64{System.SByte},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedAdd(System.Runtime.Intrinsics.Vector64{System.UInt16},System.Runtime.Intrinsics.Vector64{System.UInt16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedAdd(System.Runtime.Intrinsics.Vector64{System.UInt32},System.Runtime.Intrinsics.Vector64{System.UInt32},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedAddScalar(System.Runtime.Intrinsics.Vector64{System.Int64},System.Runtime.Intrinsics.Vector64{System.Int64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedAddScalar(System.Runtime.Intrinsics.Vector64{System.UInt64},System.Runtime.Intrinsics.Vector64{System.UInt64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedNarrowingLower(System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedNarrowingLower(System.Runtime.Intrinsics.Vector128{System.Int32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedNarrowingLower(System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedNarrowingLower(System.Runtime.Intrinsics.Vector128{System.UInt16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedNarrowingLower(System.Runtime.Intrinsics.Vector128{System.UInt32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedNarrowingLower(System.Runtime.Intrinsics.Vector128{System.UInt64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateLower(System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateLower(System.Runtime.Intrinsics.Vector128{System.Int32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateLower(System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateLower(System.Runtime.Intrinsics.Vector128{System.UInt16},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateLower(System.Runtime.Intrinsics.Vector128{System.UInt32},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateLower(System.Runtime.Intrinsics.Vector128{System.UInt64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateUpper(System.Runtime.Intrinsics.Vector64{System.Byte},System.Runtime.Intrinsics.Vector128{System.UInt16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateUpper(System.Runtime.Intrinsics.Vector64{System.Int16},System.Runtime.Intrinsics.Vector128{System.Int32},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateUpper(System.Runtime.Intrinsics.Vector64{System.Int32},System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateUpper(System.Runtime.Intrinsics.Vector64{System.SByte},System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateUpper(System.Runtime.Intrinsics.Vector64{System.UInt16},System.Runtime.Intrinsics.Vector128{System.UInt32},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedNarrowingSaturateUpper(System.Runtime.Intrinsics.Vector64{System.UInt32},System.Runtime.Intrinsics.Vector128{System.UInt64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedNarrowingUpper(System.Runtime.Intrinsics.Vector64{System.Byte},System.Runtime.Intrinsics.Vector128{System.UInt16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedNarrowingUpper(System.Runtime.Intrinsics.Vector64{System.Int16},System.Runtime.Intrinsics.Vector128{System.Int32},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedNarrowingUpper(System.Runtime.Intrinsics.Vector64{System.Int32},System.Runtime.Intrinsics.Vector128{System.Int64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedNarrowingUpper(System.Runtime.Intrinsics.Vector64{System.SByte},System.Runtime.Intrinsics.Vector128{System.Int16},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedNarrowingUpper(System.Runtime.Intrinsics.Vector64{System.UInt16},System.Runtime.Intrinsics.Vector128{System.UInt32},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedNarrowingUpper(System.Runtime.Intrinsics.Vector64{System.UInt32},System.Runtime.Intrinsics.Vector128{System.UInt64},System.Byte)$2:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedScalar(System.Runtime.Intrinsics.Vector64{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalRoundedScalar(System.Runtime.Intrinsics.Vector64{System.UInt64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalScalar(System.Runtime.Intrinsics.Vector64{System.Int64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - M:System.Runtime.Intrinsics.Arm.AdvSimd.ShiftRightLogicalScalar(System.Runtime.Intrinsics.Vector64{System.UInt64},System.Byte)$1:[T:System.Diagnostics.CodeAnalysis.ConstantExpectedAttribute] - net8.0/System.Runtime.Intrinsics.dll - net9.0/System.Runtime.Intrinsics.dll - - - CP0015 - T:System.Text.RegularExpressions.GeneratedRegexAttribute:[T:System.AttributeUsageAttribute] - net8.0/System.Text.RegularExpressions.dll - net9.0/System.Text.RegularExpressions.dll - - - CP0021 - T:System.Diagnostics.Metrics.MeasurementCallback`1``0:struct - net8.0/System.Diagnostics.DiagnosticSource.dll - net9.0/System.Diagnostics.DiagnosticSource.dll - - - CP0021 - T:System.Runtime.InteropServices.Marshalling.ExceptionAsDefaultMarshaller`1``0:struct - net8.0/System.Runtime.InteropServices.dll - net9.0/System.Runtime.InteropServices.dll - - - CP0021 - T:System.Runtime.InteropServices.Marshalling.ExceptionAsDefaultMarshaller`1``0:unmanaged - net8.0/System.Runtime.InteropServices.dll - net9.0/System.Runtime.InteropServices.dll - - - CP0021 - T:System.Runtime.InteropServices.Marshalling.ExceptionAsHResultMarshaller`1``0:struct - net8.0/System.Runtime.InteropServices.dll - net9.0/System.Runtime.InteropServices.dll - - - CP0021 - T:System.Runtime.InteropServices.Marshalling.ExceptionAsHResultMarshaller`1``0:T:System.Numerics.INumber{`0} - net8.0/System.Runtime.InteropServices.dll - net9.0/System.Runtime.InteropServices.dll - - - CP0021 - T:System.Runtime.InteropServices.Marshalling.ExceptionAsHResultMarshaller`1``0:unmanaged - net8.0/System.Runtime.InteropServices.dll - net9.0/System.Runtime.InteropServices.dll - - - CP0021 - T:System.Runtime.InteropServices.Marshalling.ExceptionAsNaNMarshaller`1``0:struct - net8.0/System.Runtime.InteropServices.dll - net9.0/System.Runtime.InteropServices.dll - - - CP0021 - T:System.Runtime.InteropServices.Marshalling.ExceptionAsNaNMarshaller`1``0:T:System.Numerics.IFloatingPointIeee754{`0} - net8.0/System.Runtime.InteropServices.dll - net9.0/System.Runtime.InteropServices.dll - - - CP0021 - T:System.Runtime.InteropServices.Marshalling.ExceptionAsNaNMarshaller`1``0:unmanaged - net8.0/System.Runtime.InteropServices.dll - net9.0/System.Runtime.InteropServices.dll - - - CP0021 - T:System.Text.Json.Serialization.JsonNumberEnumConverter`1``0:T:System.Enum - net8.0/System.Text.Json.dll - net9.0/System.Text.Json.dll - diff --git a/src/mono/mono/metadata/class.c b/src/mono/mono/metadata/class.c index abd0948e3a2f5e..c74c5c12e00cfd 100644 --- a/src/mono/mono/metadata/class.c +++ b/src/mono/mono/metadata/class.c @@ -2580,7 +2580,7 @@ mono_class_get_field_from_name_full (MonoClass *klass, const char *name, MonoTyp MonoClassField *gfield = mono_metadata_get_corresponding_field_from_generic_type_definition (field); g_assert (gfield != NULL); MonoType *field_type = gfield->type; - if (!mono_metadata_type_equal_full (type, field_type, TRUE)) + if (!mono_metadata_type_equal_full (type, field_type, MONO_TYPE_EQ_FLAGS_SIG_ONLY)) continue; } return field; diff --git a/src/mono/mono/metadata/marshal-lightweight.c b/src/mono/mono/metadata/marshal-lightweight.c index 9829c95232baef..d79919ec3623d5 100644 --- a/src/mono/mono/metadata/marshal-lightweight.c +++ b/src/mono/mono/metadata/marshal-lightweight.c @@ -2305,8 +2305,8 @@ emit_unsafe_accessor_field_wrapper (MonoMethodBuilder *mb, gboolean inflate_gene } MonoClassField *target_field = mono_class_get_field_from_name_full (target_class, member_name, NULL); - if (target_field == NULL || !mono_metadata_type_equal_full (target_field->type, m_class_get_byval_arg (mono_class_from_mono_type_internal (ret_type)), TRUE)) { - mono_mb_emit_exception_full (mb, "System", "MissingFieldException", + if (target_field == NULL || !mono_metadata_type_equal_full (target_field->type, m_class_get_byval_arg (mono_class_from_mono_type_internal (ret_type)), MONO_TYPE_EQ_FLAGS_SIG_ONLY | MONO_TYPE_EQ_FLAG_IGNORE_CMODS)) { + mono_mb_emit_exception_full (mb, "System", "MissingFieldException", g_strdup_printf("No '%s' in '%s'. Or the type of '%s' doesn't match", member_name, m_class_get_name (target_class), member_name)); return; } @@ -2403,7 +2403,7 @@ inflate_method (MonoClass *klass, MonoMethod *method, MonoMethod *accessor_metho if ((context.class_inst != NULL) || (context.method_inst != NULL)) result = mono_class_inflate_generic_method_checked (method, &context, error); mono_error_assert_ok (error); - + return result; } @@ -2425,13 +2425,13 @@ emit_unsafe_accessor_ctor_wrapper (MonoMethodBuilder *mb, gboolean inflate_gener mono_mb_emit_exception_full (mb, "System", "BadImageFormatException", "Invalid usage of UnsafeAccessorAttribute."); return; } - + MonoClass *target_class = mono_class_from_mono_type_internal (target_type); ERROR_DECL(find_method_error); MonoMethodSignature *member_sig = ctor_sig_from_accessor_sig (mb, sig); - + MonoClass *in_class = target_class; MonoMethod *target_method = mono_unsafe_accessor_find_ctor (in_class, member_sig, target_class, find_method_error); @@ -2506,7 +2506,7 @@ emit_unsafe_accessor_method_wrapper (MonoMethodBuilder *mb, gboolean inflate_gen emit_missing_method_error (mb, find_method_error, member_name); return; } - + g_assert (target_method->klass == target_class); emit_unsafe_accessor_ldargs (mb, sig, !hasthis ? 1 : 0); @@ -2733,7 +2733,7 @@ emit_swift_lowered_struct_load (MonoMethodBuilder *mb, MonoMethodSignature *csig } } -/* Swift struct lowering handling causes csig to have additional arguments. +/* Swift struct lowering handling causes csig to have additional arguments. * This function returns the index of the argument in the csig that corresponds to the argument in the original signature. */ static int diff --git a/src/mono/mono/metadata/metadata-internals.h b/src/mono/mono/metadata/metadata-internals.h index 54d85997d7af4a..3f0345f881185c 100644 --- a/src/mono/mono/metadata/metadata-internals.h +++ b/src/mono/mono/metadata/metadata-internals.h @@ -1021,8 +1021,14 @@ mono_type_stack_size_internal (MonoType *t, int *align, gboolean allow_open); MONO_API void mono_type_get_desc (GString *res, MonoType *type, mono_bool include_namespace); +enum { + MONO_TYPE_EQ_FLAGS_NONE = 0, + MONO_TYPE_EQ_FLAGS_SIG_ONLY = 1, + MONO_TYPE_EQ_FLAG_IGNORE_CMODS = 2, +}; + gboolean -mono_metadata_type_equal_full (MonoType *t1, MonoType *t2, gboolean signature_only); +mono_metadata_type_equal_full (MonoType *t1, MonoType *t2, int flags); MonoMarshalSpec * mono_metadata_parse_marshal_spec_full (MonoImage *image, MonoImage *parent_image, const char *ptr); diff --git a/src/mono/mono/metadata/metadata.c b/src/mono/mono/metadata/metadata.c index a9b291bcadc54d..91da538ff585a6 100644 --- a/src/mono/mono/metadata/metadata.c +++ b/src/mono/mono/metadata/metadata.c @@ -45,11 +45,6 @@ typedef struct { MonoGenericContext context; } MonoInflatedMethodSignature; -enum { - MONO_TYPE_EQ_FLAGS_SIG_ONLY = 1, - MONO_TYPE_EQ_FLAG_IGNORE_CMODS = 2, -}; - static gboolean do_mono_metadata_parse_type (MonoType *type, MonoImage *m, MonoGenericContainer *container, gboolean transient, const char *ptr, const char **rptr, MonoError *error); @@ -2936,7 +2931,7 @@ aggregate_modifiers_equal (gconstpointer ka, gconstpointer kb) for (int i = 0; i < amods1->count; ++i) { if (amods1->modifiers [i].required != amods2->modifiers [i].required) return FALSE; - if (!mono_metadata_type_equal_full (amods1->modifiers [i].type, amods2->modifiers [i].type, TRUE)) + if (!mono_metadata_type_equal_full (amods1->modifiers [i].type, amods2->modifiers [i].type, MONO_TYPE_EQ_FLAGS_SIG_ONLY)) return FALSE; } return TRUE; @@ -5936,24 +5931,23 @@ do_mono_metadata_type_equal (MonoType *t1, MonoType *t2, int equiv_flags) gboolean mono_metadata_type_equal (MonoType *t1, MonoType *t2) { - return do_mono_metadata_type_equal (t1, t2, 0); + return do_mono_metadata_type_equal (t1, t2, MONO_TYPE_EQ_FLAGS_NONE); } /** * mono_metadata_type_equal_full: * \param t1 a type * \param t2 another type - * \param signature_only if signature only comparison should be made + * \param flags flags used to modify comparison logic * - * Determine if \p t1 and \p t2 are signature compatible if \p signature_only is TRUE, otherwise - * behaves the same way as mono_metadata_type_equal. - * The function mono_metadata_type_equal(a, b) is just a shortcut for mono_metadata_type_equal_full(a, b, FALSE). - * \returns TRUE if \p t1 and \p t2 are equal taking \p signature_only into account. + * Determine if \p t1 and \p t2 are compatible based on the supplied flags. + * The function mono_metadata_type_equal(a, b) is just a shortcut for mono_metadata_type_equal_full(a, b, MONO_TYPE_EQ_FLAGS_NONE). + * \returns TRUE if \p t1 and \p t2 are equal. */ gboolean -mono_metadata_type_equal_full (MonoType *t1, MonoType *t2, gboolean signature_only) +mono_metadata_type_equal_full (MonoType *t1, MonoType *t2, int flags) { - return do_mono_metadata_type_equal (t1, t2, signature_only ? MONO_TYPE_EQ_FLAGS_SIG_ONLY : 0); + return do_mono_metadata_type_equal (t1, t2, flags); } enum { diff --git a/src/mono/mono/mini/method-to-ir.c b/src/mono/mono/mini/method-to-ir.c index d9432fd5510de5..b3df7ddac3d31f 100644 --- a/src/mono/mono/mini/method-to-ir.c +++ b/src/mono/mono/mini/method-to-ir.c @@ -5757,8 +5757,11 @@ check_get_virtual_method_assumptions (MonoClass* klass, MonoMethod* method) * Returns null, if the optimization cannot be performed. */ static MonoMethod* -try_prepare_objaddr_callvirt_optimization (MonoCompile *cfg, guchar *next_ip, guchar* end, MonoMethod *method, MonoGenericContext* generic_context, MonoClass *klass) +try_prepare_objaddr_callvirt_optimization (MonoCompile *cfg, guchar *next_ip, guchar* end, MonoMethod *method, MonoGenericContext* generic_context, MonoType *param_type) { + g_assert(param_type); + MonoClass *klass = mono_class_from_mono_type_internal (param_type); + // TODO: relax the _is_def requirement? if (cfg->compile_aot || cfg->compile_llvm || !klass || !mono_class_is_def (klass)) return NULL; @@ -7256,7 +7259,7 @@ mono_method_to_ir (MonoCompile *cfg, MonoMethod *method, MonoBasicBlock *start_b } *sp++ = ins; /*if (!m_method_is_icall (method)) */{ - MonoMethod* callvirt_target = try_prepare_objaddr_callvirt_optimization (cfg, next_ip, end, method, generic_context, param_types [n]->data.klass); + MonoMethod* callvirt_target = try_prepare_objaddr_callvirt_optimization (cfg, next_ip, end, method, generic_context, param_types [n]); if (callvirt_target) cmethod_override = callvirt_target; } diff --git a/src/mono/wasi/Wasi.Build.Tests/Wasi.Build.Tests.csproj b/src/mono/wasi/Wasi.Build.Tests/Wasi.Build.Tests.csproj index f316261c14cdbe..17971c992ab785 100644 --- a/src/mono/wasi/Wasi.Build.Tests/Wasi.Build.Tests.csproj +++ b/src/mono/wasi/Wasi.Build.Tests/Wasi.Build.Tests.csproj @@ -95,10 +95,16 @@ + + + <_RuntimePackCurrentVersion Condition="'$(StabilizePackageVersion)' == 'true'">$(ProductVersion) + <_RuntimePackCurrentVersion Condition="'$(StabilizePackageVersion)' != 'true'">$(PackageVersion) + - <_RuntimePackVersions Include="$(PackageVersion)" EnvVarName="RUNTIME_PACK_VER9" /> + <_RuntimePackVersions Include="$(_RuntimePackCurrentVersion)" EnvVarName="RUNTIME_PACK_VER9" /> + <_RuntimePackVersions Include="$(PackageVersionNet8)" EnvVarName="RUNTIME_PACK_VER8" Condition="'$(PackageVersionNet8)' != ''" /> - <_RuntimePackVersions Include="$(PackageVersion)" EnvVarName="RUNTIME_PACK_VER8" Condition="'$(PackageVersionNet8)' == ''" /> + <_RuntimePackVersions Include="$(_RuntimePackCurrentVersion)" EnvVarName="RUNTIME_PACK_VER8" Condition="'$(PackageVersionNet8)' == ''" /> diff --git a/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs b/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs index 4f86c39c3addf8..90ce88af865f72 100644 --- a/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs +++ b/src/mono/wasm/Wasm.Build.Tests/NonWasmTemplateBuildTests.cs @@ -67,9 +67,13 @@ public NonWasmTemplateBuildTests(ITestOutputHelper output, SharedBuildPerTestCla ) .MultiplyWithSingleArgs ( - "net6.0", - s_previousTargetFramework, - s_latestTargetFramework + EnvironmentVariables.WorkloadsTestPreviousVersions + ? [ + "net6.0", + s_previousTargetFramework, + s_latestTargetFramework + ] + : [s_latestTargetFramework] ) .UnwrapItemsAsArrays().ToList(); diff --git a/src/mono/wasm/Wasm.Build.Tests/Wasm.Build.Tests.csproj b/src/mono/wasm/Wasm.Build.Tests/Wasm.Build.Tests.csproj index 640dd40a88c172..1c5ff4506db0ee 100644 --- a/src/mono/wasm/Wasm.Build.Tests/Wasm.Build.Tests.csproj +++ b/src/mono/wasm/Wasm.Build.Tests/Wasm.Build.Tests.csproj @@ -134,13 +134,18 @@ + + + <_RuntimePackCurrentVersion Condition="'$(StabilizePackageVersion)' == 'true'">$(ProductVersion) + <_RuntimePackCurrentVersion Condition="'$(StabilizePackageVersion)' != 'true'">$(PackageVersion) + - <_RuntimePackVersions Include="$(PackageVersion)" EnvVarName="RUNTIME_PACK_VER9" /> + <_RuntimePackVersions Include="$(_RuntimePackCurrentVersion)" EnvVarName="RUNTIME_PACK_VER9" /> <_RuntimePackVersions Include="$(PackageVersionNet8)" EnvVarName="RUNTIME_PACK_VER8" Condition="'$(PackageVersionNet8)' != ''" /> - <_RuntimePackVersions Include="$(PackageVersion)" EnvVarName="RUNTIME_PACK_VER8" Condition="'$(PackageVersionNet8)' == ''" /> + <_RuntimePackVersions Include="$(_RuntimePackCurrentVersion)" EnvVarName="RUNTIME_PACK_VER8" Condition="'$(PackageVersionNet8)' == ''" /> <_RuntimePackVersions Include="$(PackageVersionNet7)" EnvVarName="RUNTIME_PACK_VER7" Condition="'$(PackageVersionNet7)' != ''" /> - <_RuntimePackVersions Include="$(PackageVersion)" EnvVarName="RUNTIME_PACK_VER7" Condition="'$(PackageVersionNet7)' == ''" /> + <_RuntimePackVersions Include="$(_RuntimePackCurrentVersion)" EnvVarName="RUNTIME_PACK_VER7" Condition="'$(PackageVersionNet7)' == ''" /> <_RuntimePackVersions Include="$(PackageVersionNet6)" EnvVarName="RUNTIME_PACK_VER6" /> diff --git a/src/native/corehost/hostfxr.h b/src/native/corehost/hostfxr.h index 0c316a59b1159f..f25eb609536543 100644 --- a/src/native/corehost/hostfxr.h +++ b/src/native/corehost/hostfxr.h @@ -1,12 +1,17 @@ // Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. -#ifndef __HOSTFXR_H__ -#define __HOSTFXR_H__ +#ifndef HAVE_HOSTFXR_H +#define HAVE_HOSTFXR_H #include #include +#ifdef __cplusplus +extern "C" +{ +#endif // __cplusplus + #if defined(_WIN32) #define HOSTFXR_CALLTYPE __cdecl #ifdef _WCHAR_T_DEFINED @@ -296,10 +301,6 @@ struct hostfxr_dotnet_environment_sdk_info const char_t* path; }; -typedef void(HOSTFXR_CALLTYPE* hostfxr_get_dotnet_environment_info_result_fn)( - const struct hostfxr_dotnet_environment_info* info, - void* result_context); - struct hostfxr_dotnet_environment_framework_info { size_t size; @@ -322,6 +323,10 @@ struct hostfxr_dotnet_environment_info const struct hostfxr_dotnet_environment_framework_info* frameworks; }; +typedef void(HOSTFXR_CALLTYPE* hostfxr_get_dotnet_environment_info_result_fn)( + const struct hostfxr_dotnet_environment_info* info, + void* result_context); + // // Returns available SDKs and frameworks. // @@ -384,7 +389,7 @@ struct hostfxr_resolve_frameworks_result }; typedef void (HOSTFXR_CALLTYPE* hostfxr_resolve_frameworks_result_fn)( - const hostfxr_resolve_frameworks_result* result, + const struct hostfxr_resolve_frameworks_result* result, void* result_context); // @@ -411,8 +416,12 @@ typedef void (HOSTFXR_CALLTYPE* hostfxr_resolve_frameworks_result_fn)( // typedef int32_t(HOSTFXR_CALLTYPE* hostfxr_resolve_frameworks_for_runtime_config_fn)( const char_t* runtime_config_path, - /*opt*/ const hostfxr_initialize_parameters* parameters, + /*opt*/ const struct hostfxr_initialize_parameters* parameters, /*opt*/ hostfxr_resolve_frameworks_result_fn callback, /*opt*/ void* result_context); -#endif //__HOSTFXR_H__ +#ifdef __cplusplus +} +#endif // __cplusplus + +#endif // HAVE_HOSTFXR_H diff --git a/src/native/corehost/test/mockhostfxr/CMakeLists.txt b/src/native/corehost/test/mockhostfxr/CMakeLists.txt index 6820b27d84715c..95e57456f57f7a 100644 --- a/src/native/corehost/test/mockhostfxr/CMakeLists.txt +++ b/src/native/corehost/test/mockhostfxr/CMakeLists.txt @@ -1,8 +1,10 @@ # Licensed to the .NET Foundation under one or more agreements. # The .NET Foundation licenses this file to you under the MIT license. -add_library(mockhostfxr_2_2 SHARED mockhostfxr.cpp) -add_library(mockhostfxr_5_0 SHARED mockhostfxr.cpp) +set(MOCKHOSTFXR_SRC mockhostfxr.cpp test_c_api.c) + +add_library(mockhostfxr_2_2 SHARED ${MOCKHOSTFXR_SRC}) +add_library(mockhostfxr_5_0 SHARED ${MOCKHOSTFXR_SRC}) target_link_libraries(mockhostfxr_2_2 PRIVATE libhostcommon) target_link_libraries(mockhostfxr_5_0 PRIVATE libhostcommon) @@ -11,4 +13,4 @@ target_compile_definitions(mockhostfxr_2_2 PRIVATE MOCKHOSTFXR_2_2 EXPORT_SHARED target_compile_definitions(mockhostfxr_5_0 PRIVATE MOCKHOSTFXR_5_0 EXPORT_SHARED_API) install_with_stripped_symbols(mockhostfxr_2_2 TARGETS corehost_test) -install_with_stripped_symbols(mockhostfxr_5_0 TARGETS corehost_test) \ No newline at end of file +install_with_stripped_symbols(mockhostfxr_5_0 TARGETS corehost_test) diff --git a/src/native/corehost/test/mockhostfxr/mockhostfxr.cpp b/src/native/corehost/test/mockhostfxr/mockhostfxr.cpp index 46509a0f14d812..75de5a1c3f7e57 100644 --- a/src/native/corehost/test/mockhostfxr/mockhostfxr.cpp +++ b/src/native/corehost/test/mockhostfxr/mockhostfxr.cpp @@ -1,3 +1,6 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + #include "error_codes.h" #include "hostfxr.h" #include "host_startup_info.h" diff --git a/src/native/corehost/test/mockhostfxr/test_c_api.c b/src/native/corehost/test/mockhostfxr/test_c_api.c new file mode 100644 index 00000000000000..3cb130101c09b2 --- /dev/null +++ b/src/native/corehost/test/mockhostfxr/test_c_api.c @@ -0,0 +1,8 @@ +// Licensed to the .NET Foundation under one or more agreements. +// The .NET Foundation licenses this file to you under the MIT license. + +// hostfxr.h is a public API. When included in .c files, it may fail to compile +// if C++-specific syntax is used within the extern "C" block. Since all usage of +// this API in runtime repo are within C++ code, such breakages are not encountered +// during normal development or testing. +#include "hostfxr.h" diff --git a/src/tests/baseservices/compilerservices/UnsafeAccessors/UnsafeAccessorsTests.cs b/src/tests/baseservices/compilerservices/UnsafeAccessors/UnsafeAccessorsTests.cs index 72821f396b4f23..f4efeacf80fe94 100644 --- a/src/tests/baseservices/compilerservices/UnsafeAccessors/UnsafeAccessorsTests.cs +++ b/src/tests/baseservices/compilerservices/UnsafeAccessors/UnsafeAccessorsTests.cs @@ -328,6 +328,30 @@ public static void Verify_AccessAllFields_CorElementType() extern static ref delegate* GetFPtr(ref AllFields f); } + // Contains fields that have modopts/modreqs + struct FieldsWithModifiers + { + private static volatile int s_vInt; + private volatile int _vInt; + } + + [Fact] + public static void Verify_AccessFieldsWithModifiers() + { + Console.WriteLine($"Running {nameof(Verify_AccessFieldsWithModifiers)}"); + + FieldsWithModifiers fieldsWithModifiers = default; + + GetStaticVolatileInt(ref fieldsWithModifiers) = default; + GetVolatileInt(ref fieldsWithModifiers) = default; + + [UnsafeAccessor(UnsafeAccessorKind.StaticField, Name="s_vInt")] + extern static ref int GetStaticVolatileInt(ref FieldsWithModifiers f); + + [UnsafeAccessor(UnsafeAccessorKind.Field, Name="_vInt")] + extern static ref int GetVolatileInt(ref FieldsWithModifiers f); + } + [Fact] public static void Verify_AccessStaticMethodClass() { diff --git a/src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/ExpressionCallString.cs b/src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/ExpressionCallString.cs index 8f0b7127038f14..409a052e672f8a 100644 --- a/src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/ExpressionCallString.cs +++ b/src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/ExpressionCallString.cs @@ -10,6 +10,8 @@ namespace Mono.Linker.Tests.Cases.Reflection [Reference ("System.Core.dll")] [ExpectedNoWarnings] [KeptPrivateImplementationDetails ("ThrowSwitchExpressionException")] + [KeptAttributeAttribute(typeof(UnconditionalSuppressMessageAttribute))] + [UnconditionalSuppressMessage ("AOT", "IL3050", Justification = "These tests are not targeted at AOT scenarios")] public class ExpressionCallString { public static void Main () diff --git a/src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/ExpressionCallStringAndLocals.cs b/src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/ExpressionCallStringAndLocals.cs index 12adc8f07bf3f9..6916935480fd1f 100644 --- a/src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/ExpressionCallStringAndLocals.cs +++ b/src/tools/illink/test/Mono.Linker.Tests.Cases/Reflection/ExpressionCallStringAndLocals.cs @@ -1,4 +1,5 @@ using System; +using System.Diagnostics.CodeAnalysis; using System.Linq.Expressions; using Mono.Linker.Tests.Cases.Expectations.Assertions; using Mono.Linker.Tests.Cases.Expectations.Metadata; @@ -7,6 +8,8 @@ namespace Mono.Linker.Tests.Cases.Reflection { [Reference ("System.Core.dll")] [ExpectedNoWarnings] + [KeptAttributeAttribute (typeof (UnconditionalSuppressMessageAttribute))] + [UnconditionalSuppressMessage ("AOT", "IL3050", Justification = "These tests are not targeted at AOT scenarios")] public class ExpressionCallStringAndLocals { public static void Main () diff --git a/src/tools/illink/test/Mono.Linker.Tests.Cases/Warnings/WarningSuppression/AddSuppressionsBeforeAttributeRemoval.cs b/src/tools/illink/test/Mono.Linker.Tests.Cases/Warnings/WarningSuppression/AddSuppressionsBeforeAttributeRemoval.cs index dc0d349c3c9b80..fffc017345a6e6 100644 --- a/src/tools/illink/test/Mono.Linker.Tests.Cases/Warnings/WarningSuppression/AddSuppressionsBeforeAttributeRemoval.cs +++ b/src/tools/illink/test/Mono.Linker.Tests.Cases/Warnings/WarningSuppression/AddSuppressionsBeforeAttributeRemoval.cs @@ -9,6 +9,7 @@ namespace Mono.Linker.Tests.Cases.Warnings.WarningSuppression [SetupLinkAttributesFile ("AddSuppressionsBeforeAttributeRemoval.xml")] [ExpectedNoWarnings] + [UnconditionalSuppressMessage ("AOT", "IL3050", Justification = "These tests are not targeted at AOT scenarios")] public class AddSuppressionsBeforeAttributeRemoval { [Kept] diff --git a/src/tools/illink/test/Mono.Linker.Tests.Cases/Warnings/WarningSuppression/DetectRedundantSuppressionsFeatureSubstitutions.cs b/src/tools/illink/test/Mono.Linker.Tests.Cases/Warnings/WarningSuppression/DetectRedundantSuppressionsFeatureSubstitutions.cs index a5cb25f761348f..c357ba3c17b2b5 100644 --- a/src/tools/illink/test/Mono.Linker.Tests.Cases/Warnings/WarningSuppression/DetectRedundantSuppressionsFeatureSubstitutions.cs +++ b/src/tools/illink/test/Mono.Linker.Tests.Cases/Warnings/WarningSuppression/DetectRedundantSuppressionsFeatureSubstitutions.cs @@ -13,6 +13,7 @@ namespace Mono.Linker.Tests.Cases.Warnings.WarningSuppression [SetupLinkerArgument ("--feature", "Feature", "false")] [ExpectedNoWarnings] [SkipKeptItemsValidation] + [UnconditionalSuppressMessage ("AOT", "IL3050", Justification = "These tests are not targeted at AOT scenarios")] public class DetectRedundantSuppressionsFeatureSubstitutions { public static void Main () diff --git a/src/tools/illink/test/Mono.Linker.Tests.Cases/Warnings/WarningSuppression/DetectRedundantSuppressionsInMembersAndTypes.cs b/src/tools/illink/test/Mono.Linker.Tests.Cases/Warnings/WarningSuppression/DetectRedundantSuppressionsInMembersAndTypes.cs index 884ceb4a6c81b5..f507fdfc3372cc 100644 --- a/src/tools/illink/test/Mono.Linker.Tests.Cases/Warnings/WarningSuppression/DetectRedundantSuppressionsInMembersAndTypes.cs +++ b/src/tools/illink/test/Mono.Linker.Tests.Cases/Warnings/WarningSuppression/DetectRedundantSuppressionsInMembersAndTypes.cs @@ -10,6 +10,7 @@ namespace Mono.Linker.Tests.Cases.Warnings.WarningSuppression { [ExpectedNoWarnings] [SkipKeptItemsValidation] + [UnconditionalSuppressMessage ("AOT", "IL3050", Justification = "These tests are not targeted at AOT scenarios")] public class DetectRedundantSuppressionsInMembersAndTypes { public static void Main () diff --git a/src/tools/illink/test/Mono.Linker.Tests.Cases/Warnings/WarningSuppression/DetectRedundantSuppressionsTrimmedMembersTarget.cs b/src/tools/illink/test/Mono.Linker.Tests.Cases/Warnings/WarningSuppression/DetectRedundantSuppressionsTrimmedMembersTarget.cs index caaa05a6a0bce2..df1634b0cd1a4c 100644 --- a/src/tools/illink/test/Mono.Linker.Tests.Cases/Warnings/WarningSuppression/DetectRedundantSuppressionsTrimmedMembersTarget.cs +++ b/src/tools/illink/test/Mono.Linker.Tests.Cases/Warnings/WarningSuppression/DetectRedundantSuppressionsTrimmedMembersTarget.cs @@ -23,6 +23,7 @@ namespace Mono.Linker.Tests.Cases.Warnings.WarningSuppression { [ExpectedNoWarnings] [SkipKeptItemsValidation] + [UnconditionalSuppressMessage ("AOT", "IL3050", Justification = "These tests are not targeted at AOT scenarios")] class DetectRedundantSuppressionsTrimmedMembersTarget { [ExpectedWarning ("IL2072")] diff --git a/src/tools/illink/test/Mono.Linker.Tests.Cases/Warnings/WarningSuppression/SuppressWarningsInMembersAndTypesUsingTarget.cs b/src/tools/illink/test/Mono.Linker.Tests.Cases/Warnings/WarningSuppression/SuppressWarningsInMembersAndTypesUsingTarget.cs index d00ac7d68fb484..c0098d1d1ff59d 100644 --- a/src/tools/illink/test/Mono.Linker.Tests.Cases/Warnings/WarningSuppression/SuppressWarningsInMembersAndTypesUsingTarget.cs +++ b/src/tools/illink/test/Mono.Linker.Tests.Cases/Warnings/WarningSuppression/SuppressWarningsInMembersAndTypesUsingTarget.cs @@ -17,6 +17,7 @@ namespace Mono.Linker.Tests.Cases.Warnings.WarningSuppression #endif [SkipKeptItemsValidation] [LogDoesNotContain ("TriggerUnrecognizedPattern()")] + [UnconditionalSuppressMessage ("AOT", "IL3050", Justification = "These tests are not targeted at AOT scenarios")] public class SuppressWarningsInMembersAndTypesUsingTarget { /// @@ -83,6 +84,7 @@ void Warning4 () } [ExpectedNoWarnings] + [UnconditionalSuppressMessage ("AOT", "IL3050", Justification = "These tests are not targeted at AOT scenarios")] public class WarningsInMembers { public void Method ()